二叉树基本是数据结构这门课里面最重要的一种树了,理解了二叉树,基本所有树的特性都掌握了。
一,二叉树需要注意的点
1,二叉树的子树有左右之分,不能随意换
2,二叉树与度为二的树的区别(这一点是重点)
1)度为二的树至少有三个结点
2)二叉树的孩子结点不论有几个,只要有,他的位置就是确定的,即二叉树的孩子节点不是相对于另一个结点而确定的。
二,几个特殊的二叉树
1,满二叉树:高度为h,含有***(2^h-1)***个结点的树
2,完全二叉树(这个是重点):每个结点都与满二叉树中的编号一一对应。
3,二叉排序树:左边的比根小,右边的比根大。
关于二叉树的几个重要性质:
1,非空二叉树 n0 = n2 +1
2,第K层上最多有 2^(k-1)个结点
3,对于完全二叉树:n个结点的最小高度为:log(n+1)取上限,(这个可以根据前一节树的性质推断出)
4,对于树的链式存储结构:含有n个结点的二叉链表来说,有n+1个空指针域。
5,对于完全二叉树,有度为一的结点,那么它只有一个。
几种重要的题型:
1,知道结点个数,求叶结点的个数;
解:最后一个叶结点的序号是 n/2 取下界;
用n减这个就可求出
2,知道叶子结点的个数x,求最多有多少个结点?
解1:
设n为总结点数
n - (n/2取下界) = x
当n为偶数时n是最大的
解2:由度为0和度为2的结点的关系推出
n0 + n1 +n2 = x+n1
当n1 取 1时结点数最多
3,判断序号为p和q是否在同一层
解:(log p)取下界 = (log q)取下界