使用 tikz 树库绘制与或树的弧

使用 tikz 树库绘制与或树的弧

我试图得到这个问题的类似结果:在 Tikz 中绘制 AND/OR 树

然而,我正在尝试使用treestikz 中的库,并试图获取通过访问forest包中的兄弟姐妹和父母而产生的自动弧,如图所示这里。但是,我找不到访问节点的第一个和最后一个子节点的方法。

基本上,我想在我的and样式中添加一种在其所有子节点之间自动生成弧的方法(如上一个问题中所示)。我知道我可以手动命名节点并创建弧(例如\path (P) -- coordinate[midway] (PQ) (Q);),但我希望使用自动解决方案。

% !TeX program=lualatex
\documentclass[convert]{standalone}

\usepackage{tikz}
\usetikzlibrary{
graphdrawing,
graphs,
}
\usegdlibrary{trees}

\begin{document}
\begin{tikzpicture}[
  and/.style={fill=red!50, draw=red, graphs/source edge style=red},
  or/.style={fill=cyan!50, draw=black, graphs/source edge clear}
]
\graph[
  tree layout, fresh nodes, 
  sibling distance=1.5cm, layer distance=1cm, 
  nodes={shape=circle, draw, minimum width=.5cm}, 
  edge quotes={fill=white, inner sep=1pt}, 
  grow=down,
  level/.append code={\ifodd#1\relax\tikzset{nodes={or}}\else\tikzset{nodes={and}}\fi},
] {
  G -- {
    "" -- {
      B -- "" -- D -- "" -- S;
      P -- "" -- S
    };
    "" -- {
      B -- "" -- D -- "" -- S;
      P -- "" -- S
    }
  };
};
\end{tikzpicture}
\end{document}

例如,对于第二级的红色节点,我想要一条弧。但其余的红色节点没有多个子节点,因此它们不应该得到一条弧。 在此处输入图片描述

相关内容