Tikz 使用子节点绘制 4 级深度的二叉树

Tikz 使用子节点绘制 4 级深度的二叉树

我需要创建一个 4 级深二叉树,目前我有:

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

\begin{document}
\begin{tikzpicture}[binary tree layout]
    \node{a}
        child{node{b}
            child{node{d}
                child{node{h}}
                child{node{i}}
            }
            child{node{e}
                child{node{j}}
                child{node{k}}
            }
        }
        
        child{node{c}
            child{node{f}
                child{node{l}}
                child{node{m}}
            }
            child{node{g}
                child{node{n}}
                child{node{o}}
            }
        };
\end{tikzpicture}
\end{document}

但在 Overleaf 上编译时,有些节点相互重叠(i 和 j)(m 和 n)。而且它根本不是二叉树 x)

错误的二叉树

我也尝试添加:

\begin{tikzpicture}[binary tree layout]

但我们仍然有一个关于 c 节点的问题

使用

答案1

b您的节点和节点之间有一个空白行c,这让解析器感到困惑。删除它就可以得到您想要的树。但您可能想考虑改用forestfor 树,因为输入语法(带标签的括号)要简单得多。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{graphs,graphdrawing}
\usegdlibrary{trees}
\usepackage{forest}

\begin{document}
\begin{tikzpicture}[binary tree layout]
    \node{a}
        child{node{b}
            child{node{d}
                child{node{h}}
                child{node{i}}
            }
            child{node{e}
                child{node{j}}
                child{node{k}}
            }
        }
        child{node{c}
            child{node{f}
                child{node{l}}
                child{node{m}}
            }
            child{node{g}
                child{node{n}}
                child{node{o}}
            }
        };
\end{tikzpicture}
\begin{forest}
[a [b [d [h] [i]] [e [j] [k] ]][c [f [l] [m]][g [n][o]]]]
\end{forest}
\end{document}

代码输出

相关内容