《大话数据结构》之二叉树的四种遍历

二叉树的遍历共分四种:前序遍历、中序遍历、后序遍历、层序遍历。

除层序遍历以外,所谓的前序、中序、后序,是按父节点所处位置的不同来划分的。父节点在两个子节点的中间,那就是中序,在两个子节点的前面那就是前序。

此外二叉树对子节点的遍历都是先左后右的。(如果说,男左女右的话,那么可以认为这样有点重男轻女,这个思想在国外也是有的(*^__^*) 嘻嘻……)

《大话数据结构》之二叉树的四种遍历_第1张图片

以上面这个二叉树为例。

前序遍历:

1、按前序遍历写下根节点和他的子节点

A  B  C

2、先左后右,看B和他的子节点,在第一步的基础上,写下按前序遍历,B和他的子节点的顺序,忽略A和C

A ( B  D ) C

3、看B的左节点D,按前序遍历写下D和他子节点的顺序

A  B ( D  G  H ) C

4、此刻A的左子树已经遍历完成,开始看右子树,同样,按父节点在前,先左后右的顺序写下C和他的子节点的序列

A  B  D  G  H ( C  E  F )

5、先左后右,先看C的右节点E,按父节点在前,先左后右的顺序写下E和他的子节点的序列

A  B  D  G  H  C ( E  I ) F

6、此时整个二叉树已经全部遍历完成,没有节点没有访问到,那么完整的序列就是

A  B  D  G  H  C  E  I  F  


中序遍历:

思想和步骤与前序一样,只是父节点变成在中间访问。

1、按父节点在中间,先左后右的顺序遍历根节点和他的子节点

B  A  C

2、按父节点在中间,先左后右的顺序遍历根节点左节点B和他的子节点

(D  B ) A  C  

3、按父节点在中间,先左后右的顺序遍历B的左节点D和他的子节点

(G  D  H ) B  A  C  

4、根节点的左子树遍历完成,那就开始遍历右子树,C和他的子节点

G  D  H  B  A ( E  C  F)

5、按父节点在中间,先左后右的顺序遍历C的左节点E和他的子节点

G  D  H  B  A ( E  I ) C  F

6、至此所有节点遍历完成,最终中序遍历顺序为

G  D  H  B  A  E  I  C  F


后序遍历:

思想和步骤与前面是一样一样的,只是父节点变成在最后访问。

1、按父节点在后面,先左后右的顺序遍历根节点和他的子节点

B  C  A

2、按父节点在后面,先左后右的顺序遍历根节点左节点B和他的子节点

(D  B )  C  A  

3、按父节点在后面,先左后右的顺序遍历B的左节点D和他的子节点

(G  H  D ) B  C  A

4、根节点的左子树遍历完成,那就开始遍历右子树,C和他的子节点

G  H  D  B ( E  F  C )  A

5、按父节点在后面,先左后右的顺序遍历C的左节点E和他的子节点

G  H  D  B ( I  E ) F  C  A

6、至此所有节点遍历完成,最终后序遍历顺序为

G  H  D  B  I  E  F  C  A


层序遍历:

最简单的一种遍历方法。按层次,从左到右写,完全不需要考虑前后问题。

1、先遍历第一层

A

2、遍历第二层

A ( B  C )

3、遍历第三层

A  B  C ( D  E  F )

4、遍历第四层

A  B  C  D  E  F ( G  H  I )

5、所有层次遍历完成,最终层序遍历结果为

A  B  C  D  E  F  G  H  I  

你可能感兴趣的:(大话数据结构)