1. 有一颗树的括号表示为A(B, C(E, F(G)), D),回答下面的问题:
- 指出树的根结点?
- 指出棵树的所有叶子结点?
- 结点C的度是多少?
- 这棵树的度为多少?
- 这棵树的高度是多少?
- 结点C的孩子结点是哪?
- 结点C的双亲结点是谁?
答案:
这棵树的根结点为A
这棵树的叶子结点为B丶E丶G丶D // 叶子结点:一棵树当中没有子结点(即度为0)的结点称为叶子结点,简称“叶子”。叶子是指出度为0的结点,又称为终端结点。
结点C的度为2 // 结点度:结点拥有子结点的数量
这棵树的度是3 // 二叉树的度:是指树中各结点度的最大值
这棵树的高度为4 // 深度是从根节点到它的叶节点,高度是从叶节点数到它的根节点
节点C的孩子结点是E丶F
结点C的双亲结点是A
2. 若一棵度为4的树中度为2丶3丶4的结点个数分别为3丶2丶2,则该树的叶子结点的个数是多少?
答案:
在树中,结点有几个分叉,度就是几。
树中结点数 = 总分叉树 + 1。(这里的分叉树就是所有结点的度之和)
❝那么设叶子数为X,则此树的总分叉树为 2 * 3 + 3 * 2 + 4 * 2 = 20;树中结点数 = 总分叉树 + 1 = 20 + 1 = 21; 3 + 2 + 2 + X = 21,解得X = 14,即该树的叶子结点的个数为14。
❞
3. 为了实现以下各种功能,其中X结点表示该结点的位置,给出树的最适合的存储结构:
- 求X和Y结点的最近祖先结点
- 求X结点的所有子孙
- 求根结点到X结点的路径
- 求X结点的所有右边结点的路径
- 判断X结点是否是叶子结点
- 求X结点的所有孩子
答案:
双亲存储结构
孩子链存储结构
孩子兄弟存储结构
孩子存储结构
孩子链存储结构
孩子链存储结构
4. 设二叉树BT的一种存储结构如表7.1所示。其中,BT为树根结点指针,Lichild丶rchild分别为结点的左丶右孩子指针域,在这里使用结点编号作为指针域值,0表示指针域值为空;data为结点的数据域。请完成下列问题:
- 画出二叉树BT的树形表示
- 写出按先序丶中序和后续遍历二叉树BT所得到的结点序列
- 画出二叉树BT的后续线索树(不带头结点)
答案:
- BT的逻辑结构
先序序列(根左右): abcedfhgij
中序序列(左根右): acbhfdjiga
后序序列(左右根): echfjigdba先画出遍历序列,后根据遍历序列例如ABC,看A的右子树是否为空,如果为空,则指向B,再看B,如果B的左子树为空,则指向A,以此类推,均符合这个规律。
5. 含有60个叶子结点的二叉树的最小高度是多少?
答案
❝叶子结点:一棵树中当中没有子结点(即度为0)的结点,称为叶子结点。叶子结点是指度为0的结点,又称为终端结点。
❞
❝深度为h的二叉树最多有2^h - 1个节点
❞
❝n0: 指度(分叉)为0的结点 n1:指度(分叉)为1的结点 n2:指度(分叉)为2的结点
❞
❝二叉树中的叶子节点个数等于度为2的节点个数+1: n0 = n2 + 1 证明链接
❞
答案:
在该二叉树中,n0 = 60,
n = n0 + n1 + n2 = n0 + n1 + (n0 -1) = 60 + n1 + (60 - 1) = 119 + n1;
当n1= 0且为完全二叉树时高度最小,
此时高度h = [log2^(n + 1)] = log(2)^120 = 7。所以含有60个叶子结点的二叉树最小高度是7
6. 已知一棵完全二叉树的第6层(设根结点为第1层)有8个叶子结点,则该完全二叉树的结点个数最多是多少?最少是多少?
❝满二叉树和完全二叉树的区别:满二叉树:每层都达到最大数,称为满二叉树。完全二叉树:设二叉树的高度为h层,其他各层(1~h-1)的结点数都达到最大个数,第h层从右向左连续缺若干个结点。
❞
❝满二叉树也是完全二叉树。
❞
答案:
完全二叉树的叶子结点只能在最下面两层,所以结点最多的情况是第6层为倒数第2层&#x