特点
- 每个节点最多有两个子树 就是度为 0 - 2
- 二叉树是有序的
- 左边的树叫左子树,右边的树叫右子树,即使只有一个子树,也要分出他是左子树还是右子树
为什么说二叉树和树是两种数据结构呢?就是因为二叉树是有序的这个原因
特殊类型
- 斜树
由一个根节点加上两棵分别称为左子树和右子树组成
- 满二叉树
叶子节点全都在最底层,除了叶子节点之外,每个节点都有左右两个子节点
- 完全二叉树
第i个编号和满二叉树的第i个编号位置一样 则就是完全二叉树
叶子节点都在最底下两层,最后一层的叶子节点都靠左排列,并且除了最后一层,其他层的节点个数都要达到最大
性质
- 二叉树的第i层上最多有 2i−12i−1个结点
- 在深度为k的二叉树中,最多有2k−12k−1个结点
- 在一科二叉树中,如果叶子结点的个数是n0n0,度为2的结点个数为n2n2 则 n0n0 = n2n2+1 这个上面那两个明白这个就ok
- 具有n个结点的完全二叉树的深度为⌊log2n⌋⌊log2n⌋ 这个也很好理解吗 就是对第2条性质的取对数呗
- 对于一个完全二叉树开始从1编号,
- 对于i>1的元素 则它的双亲结点是 ⌊i/2⌋⌊i/2⌋
- 如果2*i <= n 那么结点i的左孩子为 2i 否则的话没有左孩子
- 如果2*i +1 <= n 那么结点i的右孩子为 2i +1 否则的话没有右孩子