如何将垂直树对齐到顶部?
这是我现在的树:我想要得到这棵树:
^ 这是我现在的树的一部分
我正在尝试创建一个图表来说明 的路径算法O(N!)
。为了便于阅读,我仅显示顶部节点的后代,所有下部节点都应以叉子/耙子状对象作为后缀。
我希望得到一个能显示正确解决方案的答案,以及对所用代码的解释。
我的相关代码:
\documentclass[12pt,a4paper]{article}
\usepackage{tikz-qtree,tikz-qtree-compat}
\begin{document}
\begin{tikzpicture}
\tikzset{grow'=right,level distance=50pt}
\tikzset{execute at begin node=\strut}
\tikzset{every tree node/.style={align=left,anchor=base west}}
\Tree [.\node(root){E};
[.A \node(x){R};
[.D ]
[.U ]
[.T ]
]
[.R ]
[.D ]
[.U ]
[.T ]
]
[.R ]
[.D ]
[.U ]
[.T ]
]
\draw[->](x)..controls +(north west:1.5) .. (root);
\end{tikzpicture}
\end{document}
答案1
也许树并不是实现您想要实现的目标的正确方法。此示例使用矩阵以所需的方式放置节点。
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}[>=stealth]
\matrix[matrix of nodes,column sep=2em,row sep=1em] (tree) {
E & A & R & D & U & T \\
& R & D & U & T & \\
& D & U & T & & \\
& U & T & & & \\
& T & & & & \\
};
\foreach \n in {1,2,3,4,5} {\path (tree-1-1) edge (tree-\n-2);};
\foreach \n in {1,2,3,4} {\path (tree-1-2) edge (tree-\n-3);};
\foreach \n in {1,2,3} {\path (tree-1-3) edge (tree-\n-4);};
\foreach \n in {1,2} {\path (tree-1-4) edge (tree-\n-5);};
\path (tree-1-5) edge (tree-1-6);
\path (tree-1-6) edge[->,bend right=15] (tree-1-1);
\end{tikzpicture}
\end{document}
语法并不像输入树那么舒服,但结果就是你想要的。