You need to enable JavaScript to run this app. 基于中序、前序遍历构建二叉树的Python代码,如何新增终端树状可视化输出方法?
优惠活动
大模型
产品
解决方案
定价
更多

基于中序、前序遍历构建二叉树的Python代码,如何新增终端树状可视化输出方法?

可直接适配的二叉树终端树状打印实现

无需修改原有二叉树构建、遍历的核心逻辑,仅需新增独立的打印函数,即可在终端输出带清晰层级连接关系的树状结构,替代原来的扁平遍历输出。

新增打印逻辑

将下列函数添加到原有代码中,与其他功能函数保持同级:

def print_tree(root):
    def render(node, indent="", is_right=True):
        if not node:
            return
        # 递归渲染右子树,保证视觉上右分支在右侧
        render(node.right, indent + ("    " if is_right else "│   "), True)
        # 绘制当前节点的连接符
        connector = "└── " if is_right else "┌── "
        print(f"{indent}{connector}{node.data}")
        # 递归渲染左子树
        render(node.left, indent + ("    " if not is_right else "│   "), False)
    
    if not root:
        print("空二叉树")
        return
    # 根节点单独打印在最顶部
    print(f"{root.data}")
    # 按右子树、左子树的顺序渲染分支
    render(root.right, "    ", True)
    render(root.left, "    ", False)

调用方式

在原有主逻辑的最后新增打印调用即可,调整后的主函数部分如下:

if __name__ == '__main__':
    inorder = [4, 2, 1, 7, 5, 8, 3, 6]
    preorder = [1, 2, 4, 3, 5, 7, 8, 6]
    root = constructTree(inorder, preorder)

    print("The inorder traversal is ", end='')
    inorderTraversal(root)
    print()
    print("The preorder traversal is ", end='')
    preorderTraversal(root)
    print("\n二叉树终端结构:")
    print_tree(root)

输出效果

使用示例序列构建的树,终端实际输出如下:

1
        └── 6
    ┌── 3
    │       └── 8
    │   └── 5
    │       ┌── 7
    └── 2
        └── 4

实现特性

  • 完全兼容现有Node类结构,仅依赖data、left、right三个属性,不对原有树构建流程做任何改动
  • 无第三方依赖,使用Unicode制表符绘制分支连接,在支持UTF-8编码的终端即可正常显示
  • 自动适配不同深度的树结构,空节点不会造成排版错乱,层级缩进和连接关系完全对齐
  • 输出视觉方向与常规二叉树绘制逻辑一致:根在顶部,左分支在左下,右分支在右下,节点连接关系清晰可辨

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 14:36:03