C#遍历二叉树

最近看了一些关于二叉树的文章,于是学习了一下C#遍历二叉树的几种方式,特记录如下

二叉树,是一种数据结构, 它是一种非线性的数据结构. 这里的非线性是相对于线性数据结构而言的,像链表,数组,就是属于线性的数据结构. 和链表,数组等线性数据结构比起来,树的平均运行时间更短, 与树相关的排序时间复杂度都不算高

二叉树,通常有个特点,就是左边的节点的值比根节点的值小,而右边节点的值则比根节点的值大

 

对二叉树进行遍历是常见的一种算法,一般而言,有4种遍历方式,其中3种是比较常用的遍历方式

1. 前序遍历  =>  中 左 右  (这么理解:  中间的根节点在最前面,就是前序排列)

2. 中序遍历  =>  左 中 右  (这么理解: 中间的根节点在中间,就是中序排列)

3. 后序遍历   => 左 右 中 (这么理解: 中间的根节点在后面,就是后序排列)

4. 层次遍历 => 最简单,从最顶层到最低层,每层从左到右,依次遍历

前面3种是比较常用的遍历方式

 

以上面这个二叉树为例子, 上面各种遍历方式得到的结果如下:

前序排列

前序,顾名思义,就是中间的根节点在最前面,所以顺序是 中,左, 右

A - 最上面的中间节点,肯定在最前面, 然后看A的左边节点, 左边节点又是个二叉树,这个树本身又是中,左,右,中间根节点是B, 所以顺序是 A -> B

A -> B  B的左边没有树了,那就到它右边,它右边又是一个二叉树,执行中 左 右的原则,中间根节点是D, 所以顺序就成了 A -> B -> D

A -> B -> D 以D为根节点的这颗二叉树,左边是G, 所以是 A -> B -> D -> G, 右边是H, 所以顺序成了 A -> B -> D -> G -> H

A -> B -> D -> G -> H 到这里为止,最顶层根节点A 左边的树就全部走完了,也就是说 中 左 右  =》中,左已经走完了,就剩下右了,现在开始走右

A -> B -> D -> G -> H   A的右边,显然也是个二叉树,按照同样的思维方式,顺序应该是 C -> E -> F  所以最终顺序也就出来了,最终顺序是

A -> B -> D -> G -> H -> C -> E -> F

 

中序排列

中序,顾名思义,就是中间的根节点在最中间,所以顺序是 左,中, 右

先从最上面的中间节点A, 去访问它的左节点,显然左边是颗二叉树,

 

posted on 2023-01-03 17:07  新西兰程序员  阅读(145)  评论(0编辑  收藏  举报