特殊二叉树

来自姬鸿昌的知识库
Jihongchang讨论 | 贡献2022年9月20日 (二) 01:40的版本 →‎考点2:二叉排序树的构造
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

https://www.bilibili.com/video/BV1hg411V7Bm?p=61

1)二叉查找树

二叉查找树.png

二叉排序/查找树

左子树小于根

右子树大于根



对每一个结点而言,它的左孩子小于它自身,右孩子大于它自身。


特点:

1)二叉查找树的中序遍历序列为从小到大排列的序列。

2)值最小的结点无左子树,值最大的结点无右子树。

3)每一层从左到右进行遍历的序列为从小到大排列的序列。



插入结点:序列(89,48,56,48,20,112,51)

1、若查找二叉树为空树,则以新结点为查找二叉树;

2、将要插入结点值与父结点值比较,确定要放左子树还是右子树中,若子树为空,则作为子树的根结点插入;

3、若该键值结点已存在,则不再插入。



二叉查找树为空树,以新结点89为查找二叉树

89


将要插入结点值48与父结点值89比较,48<89,放左子树,左子树为空,作为子树的根结点插入;

89
48


将要插入结点值56与根结点值89比较,56<89,放左子树;

左子树不为空,将要插入结点值56与左子树的根结点值48比较,56>48,放右子树;

右子树为空,作为右子树的根结点插入;

89
48
56


键值48的结点已存在,不再插入

89
48
56


将要插入结点值20与根结点值89比较,20<89,放左子树;

左子树不为空,将要插入结点值20与左子树的根结点值48比较,20<48,放左子树;

左子树为空,作为左子树的根结点插入;

89
48
20 56


将要插入结点值112与根结点值89比较,112>89,放右子树;

右子树为空,作为右子树的根结点插入;

89
48 112
20 56


将要插入结点值51与根结点值89比较,51<89,放左子树;

左子树不为空,将要插入结点值51与左子树的根结点值48比较,51>48,放右子树;

右子树不为空,将要插入结点值51与右子树的根结点值56比较,51<56,放左子树;

左子树为空,作为左子树的根结点插入;

89
48 112
20 56
51



2)哈夫曼树

需要了解的基本概念:

图1
图2

树的路径长度:从树根到树中每一结点的路径长度之和(一般讨论的对象是叶子结点)

比如图1中:

2到根15距离是2;

4到根15距离是3;

8到根15距离是3;

1到根15距离是1;


图2中:

4到根15距离是2;

1到根15距离是3;

2到根15距离是3;

8到根15距离是1;


权:在一些应用中,赋予树中结点的一个有某种意义的实数(一般讨论的对象是叶子结点)

结点值就是叶子结点的权,比如图1中:

2的权就是2,4的权就是4……


带权路径长度:结点到树根之间的路径长度与该结点上权的乘积

比如图1中:

2的带权路径长度就是2×2;

4的带权路径长度就是3×4;

8的带权路径长度就是3×8;

1的带权路径长度就是1×1;


树的带权路径长度(树的代价):树中所有叶结点的带权路径长度之和

比如图1就是:

2×2+3×4+3×8+1×1

=4+12+24+1

=16+25

=41;


图2就是:

2×4+3×1+3×2+1×8

=8+3+6+8

=11+14

=25;


例:假设有一组权值50,20,30,40,10,请尝试构造哈夫曼树。(如何构造代价最小的哈夫曼树)

如何构造代价最小的哈夫曼树.png

从找权值最小的两个叶子结点构建子树开始,循环


考点1:二叉排序树的性质

对一棵二叉排序树进行()遍历,可得到该二叉树中结点关键字的有序序列。

A、先序

B、中序 √

C、后序

D、层序

解:二叉排序树的特点是:左孩子结点值<父结点<右孩子结点,

中序遍历就是左、中、右的顺序;

而先序遍历是中、左、右的顺序,并不满足有序


考点2:二叉排序树的构造

设有关键码序列(10,40,30,20),根据该序列构建的二叉排序树是()。

考点2 二叉排序树的构造.png

解:

第一个是根节点肯定是10,所以选项C


考点3:哈夫曼树

由权值为29、12、15、6、23的5个叶子结点构造的哈夫曼树为(),

考点3 哈夫曼树.png

解:

1、取权值最小的两个值作为叶子结点组成一棵子树(这样做是为了最小化路径最远的结点权值)

18
6 12

2、循环找最小的权值组成子树

33
18 15
6 12

然后剩下两个结点23、29,作为二叉树就只能并列放在第2层,这样能使剩下的大权值结点距离根相加最近、又能同时放得下2个结点

85
33 52
18 15 23 29
6 12

所以是图A。


其带权路径长度为()。

A、85 B、188 C、192 D、222

解:计算图A的带权路径长度:

3×6+3×12+2×15+2×23+2×29

=3×18+30+2×52

=54+30+104

=84+104

=188

答案:B