我会慢慢更新一些重要的习题
1.一棵深度为H的满k叉树有如下性质:第H层上的结点都是叶子结点,其余各层上每个结点都有k棵非空子树。如果按层次顺序从1开始对全部结点编号,问:
(1)各层的结点数目是多少?
(2)编号为p的结点的父结点(若存在)的编号是多少?
(3)编号为p的结点的第i个儿子结点(若存在)的编号是多少?
(4)编号为p的结点有右兄弟的条件是什么?其右兄弟的编号是多少?
答:
(1)第i层的结点数为,总的结点数为,根据等比数列的求和公式,得
(2)编号为1的结点是根结点,根节点没有父结点,编号为p(p!=1)的父结点是:
如果最左孩子编号为p,最右孩子编号为p+k-1,最右孩子减去根结点再除以k,就能得到最右孩子所在的组,该组即父结点的编号,int_down()。
下面给出示意图:
(3)叶子结点没有孩子结点,对于其他结点,结点p的第i个孩子为(p-1)*k+1+i,因为p之前的每个结点都会产生k个孩子,加上根结点,再加上i就是其孩子的编号。
(4)当(p-1)%k!=0时,结点p有右兄弟,编号为p+1。
2.已知一棵深度为k的树中有n1个度为1的结点,n2个度为2的结点,…,nk个度为k的结点,问该树中有多少个叶子结点?
答:
设度为0的结点数(即叶子结点)为,则
结点关系:
分支关系:
联立求出叶子结点数为
3.已知在一棵含有n个结点的树中,只有度为k的分支结点和度为0的叶子结点。试求该树含有的叶子结点的数目。
答:
结点关系:
分支关系:
联立求出叶子结点数为
4.证明:一棵满k叉树上的叶子结点数n0和非叶子结点数n1之间满足以下关系:n0=(k-1)n1+1。
答:
结点关系:
分支关系:
联立可证。
5.试分别推导含有n个结点和含n0个叶子结点的完全三叉树的深度H。
答:
n个结点的情况:前H-1层的结点数为:,前H层的结点数为:,所以
<n<=
当k=3时,,解出
n0个叶子结点的情况:由题4知:,故,得出结果: