目录
[二叉树 Binary Tree](#二叉树 Binary Tree)
二叉树 Binary Tree
二叉树是应用的最广泛的一种树形结构

二叉树的定义
- 由n个结点组成的有限集合
- n=0时,为空二叉树
- n>0时,二叉树由根+互不相交的左子树 和右子树组成(左右子树也是二叉树)


二叉树和度为二的树
|------------|-------------|
| 二叉树 | 度为二的树 |
| 所有结点都可以小于2 | 至少有一个节点的度为2 |
| 有序树,严格区分左右 | 无序树,不区分左右 |
二叉树≠度为2的树≠二叉树

二叉树的基本形态
二叉树的基本形态有五个:空二叉树,根、根+左子树、根+右子树、根+左右子树
任何二叉树都可以由以上五种复合而来
特殊的二叉树
满二叉树
满二叉树就是最"丰满"的二叉树
特征:
所有分支节点都有两个子节点
所有叶节点都在最后一层
或者
满二叉树的结点的度仅有0或2两种情况

完全二叉树
除最后一层外其他层数的结点必须是满的 ;且最后一层可以不满,但必须从左到右连续排列
若最后一层满了,那这颗完全二叉树也是一颗满二叉树


二叉树的性质
结点数之间的关系

设
度为0的结点数 为:
度为1的结点数 为:
度为2的结点数 为:
该二叉树的结点数:
根据树的结点数的性质,结点数n=所有结点度数之和+1
联立:
二叉树每层最多结点数
根据前面的"m叉树每层最多结点数"为:
令
,得:
再记二叉树的层数为
,则
同理,我们可以进一步得出二叉树最多有多少个结点
根据前面的,h层的m叉树最多有
个
令
,得:
h层的二叉树最多有
个结点
当二叉树为满二叉树时,满二叉树有
个结点
完全二叉树的性质
编号性质
首先我们对于一个完全二叉树进行编号。编号的规则是:从上到下,从左到右依次对结点编号为
一、
设对第i个结点,其左孩子的编号为:
;右孩子的编号为:
;父亲为
(下取整)
二、
最后一个分支节点(并非仅指整棵树的末分支节点)的编号为:整个树的编号(或者叫与它相对应的最后一个结点的编号)除以2,即:
既然是最后一个分支节点,那意思等价为:这个结点之后(不包含自己)的所有结点都是叶节点
即:满足
,的结点都是分支节点,反之皆为叶节点


度为1的性质
一个完全二叉树,度为1的结点有且仅有1个或0个

叶节点只可能出现在最后两层
完全二叉树叶节点只可能出现在最后两层

具有n个结点的完全二叉树的高度
具有n个结点的完全二叉树的高度**
** 或**
**
等价:n个结点的二叉树的最小高度

我们设这一完全二叉树的高度为h
情况一:明显,不能存在,这说明要想使树的高度为h,末层就必须至少存在一个结点,那么对于上面
层的结点个数为:
,再加上第h层的这一个,则有:
情况二:明显,不能存在,这说明想使树的高度为h,末层的结点最多填满而不能继续开辟下一层。那么这时这颗完全二叉树就是一颗满二叉树,则总结点数最多为:
综上有: ①
解法一:将①上式变形为:
进一步:
两边取对数得:
即:
向上取整为:
解法二:将①式变形为:
两边取对数得:
即:
向下取整为:
根据取整函数的平移性,得: