二叉树的遍历:
1、先序遍历:DLR
2、中序遍历: LDR
3、后序遍历: LRD
(L表示遍历左子树,D表示遍历根结点,R表示遍历右子树)
以下图举例说明:
以先序遍历为例:
1、因为先序遍历的规则为DLR,所以先遍历根结点,得出根结点为A,
随后遍历以A为中心分为左右两部分,左边为BEL,右边为DHJMI
因为为DLR,所以遍历为根结点接下来就是L,即BEL
2、然后将BEL看成一个二叉树以B为根结点继续使用DLR的遍历规则,
像1中一样以B为中心分为左右两部分,左边为EL,右边为空
然后以E为根结点继续使用DLR的规则,得EL
所以左边的排序为ABEL
3、右边部分的遍历顺序和上面的步骤一样,只不过因为DLR原因其
遍历出来的排序要排在左边遍历完的后面
最终结果为:ABELDHMIJ
图示过程:
遍历的过程主要是将其对应的遍历规则结合整体和拆分的观点去看,就如上述例子一样其遍历的规则为DLR,所以开始将整个二叉树看成一个整体,可将其分成D、L、R三部分,然后根据该规则紧接着取遍历拆分出来L部分,然后继续向开始一样去遍历直到拆分出来的部分都为3个单个结点为止。
中序遍历和后序遍历原理和上述都是相同的只是遍历的规则不同而已
上述例子:
中序遍历的结果:ELBAMHIDJ
后序遍历的结果:LEBMIHJDA
根据遍历序列求二叉树
1、已知先序遍历和中序遍历
2、已知后序遍历和中序遍历
注:(只有上述两种情况可求出)
两种方法的逻辑思路大致相同,学会一种另种也就可以秒懂了
这里以,已知先序遍历和中序遍历来举例说明
借用一下上面所求出的先序、中序遍历
先序(DLR):ABELDHMIJ
中序(LDR):ELBAMHIDJ
第一步:从先序中找出根结点,即A
第二步:在中序中以确定的根结点将结点分为左右两边,即左边:ELB ,右边:MHIDJ
第三步:将左右两边划分的结点依次重复上面两步即可
图示过程
总述:
先序和后序都是判断这些结点的根,而中序则是配合找出的根将这些结点分为左右子树
在先序中排在前面结点的则为其对应部分的根,后序则相反