You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用LaTeX的tikzpicture绘制无重叠节点的AVL树?

解决TikZ绘制AVL树节点重叠的问题

方案1:调整TikZ Tree库的层级间距

第三行节点重叠的核心原因是下层节点的同级间距(sibling distance)过小,可通过为不同层级单独设置间距参数解决:

在TikZ环境配置中,用level n样式定义对应层级的间距:

\begin{tikzpicture}[
    every node/.style={circle, draw, minimum size=8mm}, % 统一节点样式
    level 1/.style={sibling distance=4cm, level distance=2.5cm}, % 根节点的子节点层
    level 2/.style={sibling distance=2cm, level distance=2.5cm} % 根节点的孙节点层
]
\node {10}
child {node {5}
    child {node {3}}
    child {node {7}}
}
child {node {15}
    child {node {12}}
    child {node {18}}
};
\end{tikzpicture}
  • level n对应第n层(根节点为level 0),根据你的树结构调整sibling distance数值,数值越大,同级节点间距越宽。
  • level distance控制上下层的垂直距离,避免垂直方向节点拥挤。

方案2:改用Forest包(更省心的树绘制工具)

Forest包专门优化了树结构排版,自动处理节点间距,大幅减少手动调整的工作量:

\documentclass{article}
\usepackage{forest}
\begin{document}
\begin{forest}
    for tree={circle, draw, minimum size=8mm, l sep=2.5cm, s sep=2cm}
    [10
        [5
            [3]
            [7]
        ]
        [15
            [12]
            [18]
        ]
    ]
\end{forest}
\end{document}
  • l sep设置层级间的垂直距离,s sep设置同级节点的水平间距,全局配置后Forest会自动避免节点重叠。

如果你的AVL树结构更复杂,只需对应调整重叠层级的间距参数即可。

内容的提问来源于stack exchange,提问作者Yannick Fitch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 17:31:11