数据结构-树-选择题专题总结
【持续更新ing】
一、各种树和它的别名
- 吐槽:这些题目,没事干,取这么多名字干嘛。
0)二元树——二叉树
1)二叉排序树——排序二叉树——二叉查找树——二元查找树
2)最优二叉树——哈弗曼树(一般指哈弗曼二叉树)-霍夫曼树
二元查找树=二叉查找树=二叉搜索树=BST=binery search tree=binery sort tree
- 我们做招聘+考研,都是认为哈弗曼树是二叉树(但是有论文表明,霍夫曼树也有多叉的)
3)单支树指的是只有一个孩子并且方向一致
4)二叉树的节点的对称序列(中序序列)
二、选择题常考知识点
(1)树的节点和边的关系(常考)
从<stron>和线,两个角度考虑,这种做法真的不错,可以成为方法论</stron>
设二叉树的叶子节点为n0,度为1的节点为n1,度为2的节点为n2.则n0 = n2 + 1。
证明(这才是重点):
一、节点关系的方程
设二叉树的总节点数为n。
则n = n0 + n1 + n2(式1)
二、边关系的方程
左边:
从二叉树每个节点的线来看,除了根节点,每个节点都有一条线(从下往上看,配图如下),所以线的总数为n-1。
右边:
而每个度为2的节点则放出两条线,度为1的节点放出一条线,叶子节点则没有放出线(从上往下看,配图如下)。
所以:n-1 = 2*n2 + n1 (式2)
最后,由第二条公式减去第一条公式得:n0 = n2 + 1。
显然,这个方法可以推广到多叉树
(2)等比数列求和
看题目规定第一层叫第0层还是第1层
求Sn-1=20+21+22+...2n
也有可能是
求Sn=20+21+22+...2n
三、一些潜在的规定?
1)二叉排序树
大小似乎在招聘+考研默认:
- 左 <= 根 <= 右
(左小右大)
四、做题方法
- 做这些题目,无非就是要考虑完全,单枝树,完全二叉树等各种各样的情况,然后就是要耐心去推导公式。(心静)
树的存储结构包括: 顺序,链式(二叉链表,三叉链表),(双亲,孩子,孩子兄弟)表示法。