这是我参与8月更文挑战的第25天,活动详情查看:8月更文挑战
前言
- 相信同学们在大学绕不开就是一门叫数据结构的课程了吧。当时在学习数据结构的时候被C++中二叉树、链表等数据结构整的头晕脑胀的插电就嗝屁了。
- 今天我们来学习一下二叉树
二叉树
- 二叉树又分为【满二叉树】和【完全二叉树】。
- 满二叉树: 在二叉树中所有的根节点都拥有左右两个子节点。且所有的叶子节点都在同一层。这种二叉树我们叫做满二叉树。这种二叉树在外观上也是比较美观的
- 完全二叉树: 编号为i的结点与同深度的满二叉树中编号为i的元素位置相同。
特性
-
关于二叉树我总结了如下几个特征:
-
二叉树的第i层上最多有2^(i-1)个结点
-
一颗深度为K的二叉树中,最多有2^k-1个结点,最少有K个结点
-
二叉树中,如果叶子的结点的个数为n0,度=2的结点个数为n2,则有n0=1+n2;
-
具有n个结点的完全二叉树的深度为【log2n(以二为底n的对数)】+1
-
具有n个结点的完全二叉树中的结点从1开始按层标号,任意的编号为i的结点有:
@1.如果i>1,结点i的双亲的编号为【i/2】,否则结点i就是根结点,无双亲; @2.若2i<=n,结点i的左孩子的编号为2i,否则无左孩子。 @3.若2i+1<=n,结点i的右孩子编号为2i+1,否则无右孩子。
遍历
-
前序遍历:根结点->左结点->右结点
-
中序遍历:左结点->根结点->右结点
-
后序遍历:左结点->右结点->根结点
-
层序遍历:按曾从上到下,在每层中按从左到右的顺序遍历。
总结
- 二叉树实际上是对分治法的一种变形,在二叉树中的中序遍历就是一种有序的数据排列。我们也经常通过这个特性进行数据的一种排序。另外二叉是一种灵活的数据结构。在构造上他更加的节省空间。在查找是效率也是非常的高。在实际使用中二叉树也是使用获广泛的。关注我。下次带你了解更多!!!