二叉树的遍历规则

二叉树的遍历规则

今天看了一些关于平和查找二叉树的问题,顺便也复习了一下二叉树的遍历规则,写一下学习文档。
树的遍历顺序大体分为三种:前序遍历(先根遍历、先序遍历),中序遍历(中根遍历),后序遍历(后根遍历)。
如图所示二叉树:
在这里插入图片描述

1.前序遍历

前序遍历可以记为根左右,若二叉树为空,则结束返回。

  • 前序遍历的规则:
    (1)访问根节点
    (2)前序遍历左子树
    (3)前序遍历右子树
    这里需要注意:在完成第2,3步的时候,也是要按照前序遍历二叉树的规则完成。
    前序遍历的输出结果:ABDECF

2.中序遍历

中序遍历可以记为左根右,也就是说在二叉树的遍历过程中,首先要遍历二叉树的左子树,接着遍历根节点,最后遍历右子树。
同样,在二叉树为空的时候,结束返回。

  • 中序遍历的规则:
    (1)中序遍历左子树
    (2)访问根节点
    (3)中序遍历右子树
    注意:在完成第1,3步的时候,要按照中序遍历的规则来完成。
    中序遍历的输出结果:DBEAFC

3.后序遍历

后序遍历可以记为左右根,也就是说在二叉树的遍历过程中,首先按照后序遍历的规则遍历左子树,接着按照后序遍历的规则遍历右子树,最后访问根节点。
在二叉树为空的时候,结束返回。

  • 后序遍历二叉树的规则:
    (1)后序遍历左子树
    (2)后序遍历右子树
    (3)访问根节点
    注意:在完成1,2步的时候,依然要按照后序遍历的规则来完成。
    后序遍历的输出顺序:DEBFCA
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
叉树是指按照一定的规则访问二叉树中的每一个节点。常见的二叉树有前序遍、中序遍和后序遍。 1. 前序遍:按照根节点->左子树->右子树的顺序遍叉树。 2. 中序遍:按照左子树->根节点->右子树的顺序遍叉树。 3. 后序遍:按照左子树->右子树->根节点的顺序遍叉树。 下面是Python代码实现: ```python # 定义二叉树节点 class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right # 前序遍 def preorderTraversal(root: TreeNode) -> List[int]: if not root: return [] res = [] stack = [root] while stack: node = stack.pop() res.append(node.val) if node.right: stack.append(node.right) if node.left: stack.append(node.left) return res # 中序遍 def inorderTraversal(root: TreeNode) -> List[int]: if not root: return [] res = [] stack = [] while stack or root: while root: stack.append(root) root = root.left node = stack.pop() res.append(node.val) root = node.right return res # 后序遍 def postorderTraversal(root: TreeNode) -> List[int]: if not root: return [] res = [] stack = [] while stack or root: while root: stack.append(root) root = root.left if root.left else root.right node = stack.pop() res.append(node.val) if stack and stack[-1].left == node: root = stack[-1].right return res ``` 其中,preorderTraversal函数实现前序遍,inorderTraversal函数实现中序遍,postorderTraversal函数实现后序遍。遍过程中使用了栈来辅助实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值