树和二叉树概念及常见题型总结<选择>

本文探讨了树的基本性质,包括度为m的树和二叉树的特殊类型如满二叉树、完全二叉树和平衡二叉树。深入解析了结点个数问题,如计算叶节点、根据度分布求结点总数,并涉及完全二叉树的几种常见求解方法。此外,文章还涵盖了二叉树遍历、线索二叉树、哈夫曼树构造及其编码知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、树的四个性质

1.树中的结点数等于所有结点的度数加1

2.度为m的树中第i层最多的结点个数
在这里插入图片描述
(想要第i层结点最多,就说明i的上一层也要最多,当每一层的结点的度都是m时,取到最大值。例如度为2的树,第一层为1,第二层最多为2,第三层为4…)

3.高度为h的m叉树最多有结点个数
在这里插入图片描述
首项为1,公比为m,项数为h的等比数列求和

4.具有n个结点的m叉树的最小高度为

n的大小应该大于 前h-1层的结点,小于前h层的最多结点
在这里插入图片描述

关于度为m树 和 m叉树的

度为m的树说明至少有个结点的度为m,
但m叉树可以是空树。

二、二叉树的相关

特殊二叉树

满二叉树

高度为h ,含有 结点数为
在这里插入图片描述
除叶结点外每个结点的度为2
在这里插入图片描述

完全二叉树

从左到右排序,在同一层不可能出现没有左结点而单独出现右结点的存在

在这里插入图片描述
第一个为完全二叉树,而第二个并非完全二叉树

二叉排序树

特点:结点的左孩子比他小,结点的右孩子比他大(左小右大)

在这里插入图片描述

平衡二叉树


平衡二叉树及它的翻转问题
.

二叉树性质

  1. n0 = n2 + 1
    推导: n = n0 + n1 + n2 = 1 + n1 + 2n2 ----> n0 = n2 + 1
  2. 第k层最多的结点数是
    在这里插入图片描述

三、 结点个数问题

1.已知各个度的结点个数,求它的叶结点个数

两个公式

  1. n = n0 + n1 + n2 +…nm (n 为结点个数,m为最大度数)
  2. n = 总分支数 + 1 = 1 + 1n1 + 2n2 + 3n3…

经典例题

在一棵度为4的树T中,若有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T的叶结点个数是:
n = n0 +10 + 1 + 10 + 20 = 1 + 20*4 + 10 *3 + 1 *2 + 10 *1 > n0 = 123 - 41 = 81 个叶结点

关于完全二叉树求它的结点个数

例题类型1:已知总结点个数求叶结点

若一棵完全二叉树有768个结点,则该二叉树中叶结点个数是
思路一:最后一层的结点数 加上 倒数 第二层的叶结点个数(若有)
可以得知前九层的总和为 512 - 1 = 511,
得出最后一层叶结点个数 768 - 511 = 257
但倒数第二层应有 2 的八次 = 256 个结点,若都不是叶结点至少在最后一层产生 256 * 2 = 512 个结点 ,但现在只有 257 ,257 / 2 = 128.5
至少由129 个上一层的结点产生
在上一层总个数 256-129 = 127 得出上一层叶结点个数;
127 + 257 = 384 为总共个数
思路二:由最后一个分支序号 :总结点数除二取下限 768/2 = 384
768 - 384 = 384;

例题类型2:已知叶结点个数求它的总个数

例题:一棵有124个叶子结点的完全二叉树,最多有几个结点
思路一: 公式法 n = 2n0 + n1 - 1 = 2*124 + n1 - 1
n0 = n2 + 1;可以知道完全二叉树的度为1的结点0 or 1 所以 n1 = 1 …>248

例题类型3:通过告知第几层有几个叶子结点来求完全二叉树的最多结点个数

已知一棵完全二叉树的第六层有8个叶结点,则该完全二叉树的结点个数最多是
思路:可能会陷入第六层就是最后一层的误区,这8个叶结点可以是靠右的
8个结点,所以他的前24个结点会产生下一层的48个结点再加上前六层即可得到答案。
63 + 48 = 111

四、二叉树的几个遍历

前序(根左右)
中序(左根右)
后序(左右根)
两个遍历确定一棵树(但必须要有中序序列)
层次遍历

几种特别的

先序序列与中序序列相同

只有右子树
在这里插入图片描述

先序序列与后续序列相反

高度等于结点数

在这里插入图片描述

在这里插入图片描述

先序序列与后续序列相同

只有一个根结点

线索二叉树相关

tag = 0 表示孩子, = 1表示指向前驱 or 后继

几种需要三叉链表才能求的

先序线索二叉树中求先序前驱
后续线索二叉树中求后序后继

树、森林、二叉树相互转换

  1. 孩子兄弟表示法记住左孩子右兄弟即可。
  2. 树转化成二叉树根结点度只为1
  3. 将森林转化为二叉树时,叶结点的个数等于二叉树中左孩子指针为空的结点个数(左指针代表孩子,左指针为空代表没有孩子结点)
  4. 树的后根遍历与对应的二叉树的中根遍历相同

哈夫曼树、哈夫曼编码

带权路径长度最小的二叉树叫做哈夫曼树

哈夫曼树的构造

权值最小的两个结点合成一个结点 依次向上

几个特点

如果告诉哈夫曼树有n个叶子结点,可以得到它的非叶子结点总数是n - 1
度为m 的哈夫曼树,叶子结点个数为n ,则非叶子结点个数:
(n - 1 ) / m - 1 取上限

哈夫曼编码的几个知识

  1. 关于前缀码:即前缀不能相同,例:01,011即不是前缀码,01相同
  2. 根至路径的序列,0表示转向左孩子,1表示转向右孩子
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值