二叉树的中序、前序、后序三种遍历图解

二叉树是算法中的重要概念,现将中序、前序、后序三种遍历图解如下:
这是一个典型的5级二叉树图

这是它的5级满二叉树

中序遍历

前序遍历

后序遍历

***站里很多帖子讲到三种遍历的顺序是逐一开展的,但是我感觉同级遍历应该是同时开展的,不知道对不对,请大牛指教~~

### 二叉树遍历图解 #### 前序遍历 (Pre-order Traversal) 前序遍历遵循的规则是从根节点出发,先访问该节点,然后前序遍历该节点的左子树,再前序遍历该节点的右子树[^2]。 对于如下所示的一棵简单二叉树: ``` A / \ B C / \ D E ``` 其前序遍历的结果将是 `A -> B -> D -> E -> C`。 #### 中遍历 (In-order Traversal) 中遍历的过程是首先遍历左子树,接着访问当前节点,最后遍历右子树。按照此逻辑处理上述相同结构的二叉树,则得到其中列应为 `D -> B -> E -> A -> C`[^1]。 #### 后序遍历 (Post-order Traversal) 后序遍历指的是先遍历左子树,之后遍历右子树,最终才访问父节点本身。因此,在给定的例子当中,执行后序遍历时会获得这样的路径:`D -> E -> B -> C -> A`。 为了更直观地理解这些概念,下面提供了一个具体的例子来展示如何通过已知条件构建唯一的二叉树并完成三种不同类型的遍历过程。 假设存在一棵未知形态但满足特定前提下的二叉树,给出它的前序遍历结果为 `[1, 2, 4, 5, 3, 6, 7]` 和对应的中遍历结果为 `[4, 2, 5, 1, 6, 3, 7]`。基于这两个列表可以重建这棵树,并进一步求得它的确切后序遍历形式为 `4 -> 5 -> 2 -> 6 -> 7 -> 3 -> 1`。 ```python class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right def build_tree(preorder, inorder): if not preorder or not inorder: return None root_val = preorder.pop(0) root = TreeNode(root_val) idx = inorder.index(root_val) root.left = build_tree(preorder[:idx], inorder[:idx]) root.right = build_tree(preorder[idx:], inorder[idx+1:]) return root preorder_example = [1, 2, 4, 5, 3, 6, 7] inorder_example = [4, 2, 5, 1, 6, 3, 7] root_node = build_tree(preorder_example.copy(), inorder_example.copy()) ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值