二叉树的前序、中序、后序遍历逻辑

294 阅读2分钟

首先我们得了解二叉树的特性:子节点比父节点大,同深度(层)右边的节点比左边的节点大。

二叉树的前序、中序、后序遍历逻辑,直接贴图言简意赅。

以下是示例二叉树(满二叉树):

以下是文字说明:
1、前序遍历:从根节点出发一直往下找最左边的节点,直到最后一个左节点,再从下往上找根节点左侧的右节点,再找根节点右侧的左节点,找完左节点之后再从下往上找右侧的有节点。
遍历结果:1—>2->4->5->3->6->7

2、中序遍历:从最左边的最底部开始,找它的父级节点,再找右兄弟节点,再往上,直到根节点,再找根节点右侧树部分底部最左端开始,重复一样的操作。 遍历结果:4->2->5->1->6->3->7

3、后续遍历:只要树还有子节点,就从左右根的方式从最底部往上查找 遍历结果:4->5->2->6->7->3->1

我们来看一道《剑指offer》的题目:

解题过程如下:
1、前序遍历中1,2,4,7到3是一个转折点,所以可以说明,2,4,7为根节点左边内容,3,5,6,8为右边内容,而3则为树3,5,6,8的根节点,故其左兄弟节点为2。
2、通过中序遍历4,7,2,1可知,4为最左端节点,所以2的左子节点为4,目前7只有两种可能,为4或2的右子节点 3、中序遍历5,3,8,6说明根节点右侧最深的最左子节点为5,最深最右子节点为6,前序遍历右侧树3,5,6,8,是一个递增,所以可以确定6为3的右子节点。8只能是左子节点,所以是6的左子节点。
4、深度为3右侧最左子节点为5,5<7,按照二叉树规则,同层右边大于左边,所以7为4的右节点。