有关二叉树的中序遍历

来源:互联网 发布:vip域名注册 编辑:程序博客网 时间:2024/05/17 21:44

   二叉树的中序遍历从头到底都遵循着一个原则:先左子树-------再根结点----最后右子树(简称:左-----根------右)。一开始,找到根结点的左子树中的最后一个左子树(如图0,图为书上例子)


                                     图0

一、先找A的左子树(红圈部分),如图1


                                      图1

二、由于B也有左子树D,继续往下找B的左子树(红圈部分),如图2


                                              图2

三、由于D没有左子树,则中序遍历就从D开始(如果D有左子树,继续往下找);

然后,D也是G的根结点,而G是D的右子树,根据左-----根------右(此时无左,变成:根------右)

D之后就遍历G;

而图2红圈部分是B的左子树,B是图2红圈部分的根结点,根据左-----根------右(此时无右,变成:左--------根)

所以G之后就遍历B;

由于B没有右子树,而图1红圈部分也是A的左子树,A是图1红圈部分的根结点,根据左-----根------右

所以B之后就遍历A;


                                       图4

由于图4红圈部分是A的右子树,但是红圈内也有根结点,所以也要继续根据左-----根------右的原则。

由于E是C的左子树,E没有左子树,C是E的根结点,F是C的右子树,

根据左-----根------右

A之后遍历E,E之后遍历C,C之后遍历F。

最终序列:D G B A E C F


总结:二叉树中序遍历,一开始找遍历的第一个元素范围变化的和输出每个元素的是相反的:

          1.一开始找遍历的第一个元素的范围变化是:由大到小,由最大的左子树缩小到最小的左子树

          2.输出每个元素的范围变化是:由小到大,由最小的左子树扩大到最大的左子树。

            (笔者的话:大概是这个意思吧,总之,二叉树的中序遍历从头到底都遵循着一个原则:

 先左子树-------再根结点----最后右子树     简称:左-----根------右    



到最后,留一题让大家练一下,如图:



答案是:G D H B A E I C F

0 0
原创粉丝点击