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, 去访问它的左节点,显然左边是颗二叉树,