数据结构
- 设二叉树 bt 的一种存储结构如表 7.3 所示。其中 bt 为树根结点指针,lchild、rchild 分别为结点的左、右孩子指针域,在这里使用结点编号作为指针域值,0表示指针域值为空;data 为结点的数据域。请完成下列各题:
(1)画出二叉树 bt 的树形表示。
(2)写出按先序、中序和后序遍历二叉树 bt 所得到的结点序列。
(3)画出二叉树 bt 的后序线索树(不带头结点)。
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
---|---|---|---|---|---|---|---|---|---|---|
lchild | 0 | 0 | 2 | 3 | 7 | 5 | 8 | 0 | 10 | 1 |
data | j | h | f | d | b | a | c | e | g | i |
rchild | 0 | 0 | 0 | 9 | 4 | 0 | 0 | 0 | 0 | 0 |
- Draw
6
\
5
/ \
7 4
/ \
8 3
/ \
2 9
/
10
/
1
先序遍历(根 -> 左 -> 右)
- 访问根节点 6
- 访问右子树(节点 5, 7, 8, 4, 3, 2, 9, 10, 1)
先序遍历结果:6, 5, 7, 8, 4, 3, 2, 9, 10, 1
中序遍历(左 -> 根 -> 右)
- 从最左侧开始,访问到根,然后是右子树
- 具体顺序:8, 7, 5, 2, 3, 1, 10, 9, 4, 6
中序遍历结果:8, 7, 5, 2, 3, 1, 10, 9, 4, 6
后序遍历(左 -> 右 -> 根)
- 遍历完左右子树后访问根节点
- 具体顺序:8, 7, 2, 1, 10, 9, 3, 4, 5, 6
后序遍历结果:8, 7, 2, 1, 10, 9, 3, 4, 5, 6
(3)
6
\
5 -> NULL
/ \
7 4 -> 5
/ \
8 -> 7 3 -> 4
/ \
2 -> 1 9 -> 3
/ \
10 -> 9 1 -> 10
/
NULL
- 含有 60 个叶子结点的二叉树的最小高度是多少?
含有 60 个叶子结点的二叉树的最小高度是 7。这是因为在一个二叉树中,如果树的高度为 h,那么最后一层最多可以容纳 个结点。为了使这棵树具有至少 60 个叶子结点,我们需要满足条件 。计算后得知,高度为 7 时,最后一层最多可以有 个结点,这满足了至少有 60 个叶子结点的要求,因此最小高度是 7。
- 已知一棵完全二叉树的第 6 层(设根结点为第 1 层)有8个叶子结点,则该完全二叉树的结点个数最多是多少?最少是多少?
在分析完全二叉树的结点总数问题时,我们确定了:
已知条件:第 6 层有 8 个叶子结点。
完全二叉树定义:除最后一层外,所有层都是满的,且最后一层的结点连续靠左排列。
结点数最少的情况:
- 假设:第 6 层只有这 8 个叶子结点,无其他结点。
- 计算:
- 从第 1 层到第 5 层每一层都是满的,结点总数为 (2^0 + 2^1 + 2^2 + 2^3 + 2^4 = 1 + 2 + 4 + 8 + 16 = 31)。
- 第 6 层有 8 个结点。
- 因此,结点总数最少是 (31 + 8 = 39) 个。
结点数最多的情况:
- 假设:第 6 层除了 8 个叶子结点外,其他位置也被填满。
- 计算:
- 第 6 层满时,有 (2^5 = 32) 个结点。
- 结点总数最多是 (31 + 32 = 63) 个。
结论
这棵完全二叉树的结点数最少是 39 个,最多是 63 个。这种分析反映了完全二叉树从满二叉树到部分填充最后一层的变化范围。
公众号:AI悦创【二维码】
C:::
AI悦创·编程一对一
AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++ 辅导班、java 辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发、Web、Linux」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。当然,还有线下线上摄影课程、Photoshop、Premiere 一对一教学、QQ、微信在线,随时响应!微信:Jiabcdefh
C++ 信息奥赛题解,长期更新!长期招收一对一中小学信息奥赛集训,莆田、厦门地区有机会线下上门,其他地区线上。微信:Jiabcdefh
方法一:QQ
方法二:微信:Jiabcdefh
- 0
- 0
- 0
- 0
- 0
- 0