Android版数据结构与算法(六):树与二叉树 (2)

 

Android版数据结构与算法(六):树与二叉树

 

五、特殊二叉树

斜树:所有结点只有左子树的二叉树叫做左斜树,所有结点只有右子树的二叉树叫做右斜树。

如图:

Android版数据结构与算法(六):树与二叉树

满二叉树:在一棵二叉树中,所有分支结点都有左子树与右子树,并且所有叶子结点都在同一层则为满二叉树。

如图:

Android版数据结构与算法(六):树与二叉树

完全二叉树:所有叶子节点都出现在 k 或者 k-1 层,而且从 1 到 k-1 层必须达到最大节点数,第 k 层可是不是慢的,但是第 k 层的所有节点必须集中在最左边。

如图:

Android版数据结构与算法(六):树与二叉树

 

 六、二叉树的遍历

二叉树的遍历主要有三种:先序遍历,中序遍历,后续遍历,接下来我们挨个了解一下。

先序遍历:先访问根结点,再先序遍历左子树,再先序遍历右子树。

如图所示:

 

Android版数据结构与算法(六):树与二叉树

先序遍历结果为:ABDGHCEIF

中序遍历:先中序遍历左子树,再访问根结点,再中序遍历右子树。

如图:

Android版数据结构与算法(六):树与二叉树

中序遍历结果为:GDHBAEICF

后序遍历:先后序遍历左子树,再后序遍历右子树,再访问根结点。

如图:

Android版数据结构与算法(六):树与二叉树

后序遍历结果:GHDBIEFCA

七、java实现二叉树

先来看看每个结点类:

1 public class TreeNode{ 2 private String data;//自己结点数据 3 private TreeNode leftChild;//左孩子 4 private TreeNode rightChild;//右孩子 5 6 public String getData() { 7 return data; 8 } 9 10 public void setData(String data) { 11 this.data = data; 12 } 13 14 public TreeNode(String data){ 15 this.data = data; 16 this.leftChild = null; 17 this.rightChild = null; 18 } 19 }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyyygw.html