二叉树糕手
二叉树性质
节点数与高度的关系:高度为 h 的二叉树,最少有 h 个节点(每层仅 1 个节点,斜树),最多有 2^h - 1 个节点(满二叉树,每层节点数全满)。
度的特性:节点的「度」是指其子节点个数(0 = 叶节点,1 = 单子女节点,2 = 双子女节点);任意二叉树中,「度为 0 的节点数(叶节点)= 度为 2 的节点数 + 1」。
,很好理解,只可能有度为1,2,3的节点,加一块就是总结点。
,除了根节点都是子节点,从上向下按孩子算,这个1是根节点。 总结点数= 度数 + 1.
联立可得,叶节点 = 2度 + 1
递归特性:二叉树的左、右子树仍是二叉树,因此多数操作(遍历、查找)可通过递归实现。
二叉树很像二进制数,二叉树第一层有节点数1 = ,第二层是2 =
,第三层4 =
,以此类推,第 i 层有
个节点,一共有h层满二叉树(层数(深度)从1开始)形成这么一个等比数列,
,树的二进制每位都是1,111b + 1 = 1000b。
有n个节点的满二叉树,深度h = 层度 = .
对于完全二叉树(最后一次不满但是左对齐),h = 层数 = 向上取整
完全二叉树可以由节点数n反向推出,因为
,
,所以
一定是奇数,而对于完全二叉树,度数为1的节点至多存在一个,如果总节点数n是偶数,则
= 1,否则
= 0。
二叉树的存储结构
顺序存储
二叉树的顺序存储只适合完全二叉树

如果不是完全二叉树,为了方便的找到左右孩子和父节点,数组中有很多空位,浪费空间

最坏的情况:

链式存储

如果需要方便的找到父节点,还可以加一个父节点指针。
二叉树的遍历

二叉树的遍历是栈式的深度优先搜索。

二叉树的层序遍历是队列式的广度优先搜索。

浙公网安备 33010602011771号