news 2026/5/11 17:25:53

GESP6级C++考试语法知识(三、图与树(三))

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GESP6级C++考试语法知识(三、图与树(三))


第三课:《二叉树进阶王国》

—— 完全二叉树 + 二叉排序树的神奇魔法


🌟故事开始:国王的两大神树

1、在“二叉树魔法学院”毕业后,

小勇者们继续前进。

他们来到了一座更神秘的地方:

🏰《二叉树进阶王国》

王国中央,
长着两棵神奇的大树:


2、🌳第一棵:

完全二叉树

它长得:

整整齐齐!


3、🌳第二棵:

二叉排序树

它拥有:

超快查找魔法!


4、汉克老师说:

“学会它们,”

“我们就真正进入高级算法世界了!”

于是,
新的冒险开始了!


第一章:什么是完全二叉树?


1、🌟先回忆普通二叉树

A / \ B C / D

这是普通二叉树。


2、🌟再看完全二叉树

1 / \ 2 3 / \ / 4 5 6

是不是特别整齐?


3、🌟完全二叉树的规则


(1)规则1

除了最后一层,

前面必须全部满!


(2)规则2

最后一层:

必须从左往右连续排列。


(3)🌟像电影院坐座位!

正确:

😀 😀 😀 😀 😀

错误:

😀 ❌ 😀 😀

中间不能空!


第二章:判断是不是完全二叉树


1、🌟正确例子

1 / \ 2 3 / \ / 4 5 6

2、🌟错误例子

1 / \ 2 3 / \ 4 6

为什么错?

因为:

5的位置空了, 6却跑后面去了。

不连续!


3、🌟课堂小游戏

汉克老师画树。

同学们来判断:

✅ 是完全二叉树
❌ 不是完全二叉树


第三章:为什么完全二叉树这么重要?


1、🌟完全二叉树的秘密:

完全二叉树可以不用“连线”!

直接用数组存!


2、🌟普通树的问题

普通树:

需要记录:

left right

比较麻烦。


3、🌟完全二叉树的神奇规律

假设:

节点编号从1开始

(1)🌟规律来了!


当前节点:

i

左孩子:

left = 2i


右孩子:

right = 2i+1


父节点:

parent = i / 2 (向下取整)


(2)🌟举例!


假设:

节点3

左孩子:

i*2 = 3×2 = 6

右孩子:

i*2+1 = 3×2+1= 7

父节点:

i / 2 = 3/2 =1

4、🌟是不是特别神奇?

电脑根本不用画树。

只靠位置就知道关系!


第四章:数组存树


1、🌟树

1 / \ 2 3 / \ / 4 5 6

2、🌟数组

下标: 1 2 3 4 5 6 数值: 1 2 3 4 5 6

3、🌟观察!


(1)节点2

左孩子:

4

右孩子:

5

(2)节点3

左孩子:

6

4、🌟太方便了!

这就是:

🌟堆(Heap)的基础!

后面会学到。


第五章:二叉排序树 BST


1、汉克老师带同学们来到:

🌳智慧查找森林

这里有一棵会“自动排序”的神树。


2、🌟什么是 BST?

BST:

Binary Search Tree


中文:

二叉排序树


3、🌟它有超级规则!


左边都小


右边都大


4、🌟例子

8 / \ 3 10 / \ \ 1 6 14

5、🌟观察!


左边

1 3 6

都比8小。


右边

10 14

都比8大。


6、🌟这就是 BST!


第六章:BST 为什么厉害?


1、汉克老师问:

“如果要找数字6怎么办?”


2、🌟普通树

只能一个个找。

很慢。


3、🌟BST

像猜数字游戏!


4、🌟开始查找6

(1)第一步

当前:

8

(2)比较

6 < 8

所以:

往左走!


(3)到3

6 > 3

往右走!


(4)找到6!


(5)🌟只查了3次!


(6)🌟这就是:二分思想!


第七章:BST 插入


1、🌟现在插入7


(1)第一步

7 < 8

往左。


(2)第二步

7 > 3

往右。


(3)第三步

7 > 6

继续右。


(4)🌟放进去!

8 / \ 3 10 / \ 1 6 \ 7

2、🌟规律

一路比较。

一路寻找位置。


第八章:BST 中序遍历的秘密!


1、汉克老师给同学们说:

“BST还藏着一个秘密!”


2、🌟看这棵树

8 / \ 3 10 / \ \ 1 6 14

3、🌟中序遍历!

口诀:

左 根 右

4、🌟结果!

1 3 6 8 10 14

5、🌟发现了吗?

自动从小到大排序了!


6、🌟超级重要结论

BST 的中序遍历:

一定是升序!


第九章:简单代码启蒙


1、🌟BST节点

struct Node { int val; Node *left; Node *right; };

2、🌟查找函数

bool find(Node *root,int x) { if(root==NULL) return false; if(root->val==x) return true; if(x<root->val) return find(root->left,x); else return find(root->right,x); }

3、🌟详细解释


(1)找到空节点

说明没找到。


(2)当前节点等于x

找到了!


(3)x更小

去左边。


(4)x更大

去右边。


4、🌟是不是特别像:

猜数字游戏?


第十章:课堂训练


🌟训练1:判断完全二叉树


哪个是?

A) 1 / \ 2 3 / \ 4 5

B) 1 / \ 2 3 / \ 4 5

答案:

A正确 B错误

🌟训练2:BST查找路线

8 / \ 3 10 / \ \ 1 6 14

找14:

路线是什么?


🌟答案

8 → 10 → 14

🌟训练3:中序遍历

结果:

1 3 6 8 10 14

第十一章:举一反三!


🌟后面哪里会用到 BST?


🌳字典查单词

🌳游戏排行榜

🌳数据库查找

🌳搜索系统


🌟后面哪里会用到完全二叉树?


🌳优先队列

🌳堆排序

🌳任务调度


第十二章:本课总结


🌟同学们今天学会了什么?


1、🌳完全二叉树

特点:

✅ 前面全满
✅ 最后一层从左连续


2、🌳数组存树

规律:

left = 2i

right = 2i+1


3、🌳BST

规则:

左边小 右边大

4、🌳BST查找

像:

猜数字游戏

5、🌳BST中序遍历

结果一定:

升序

⚔️课后任务


🌟任务1

判断下面是不是完全二叉树。

1 / \ 2 3 / \ 4 5

讲讲为什么?


🌟任务2

8 / \ 3 10 / \ \ 1 6 14

写出寻找 1 的BST查找路径。


🌟任务3

自己设计一棵BST,
让其他同学来做中序遍历。


🌟下节课预告

下一课:

⚔️《哈夫曼密码森林》⚔️

我们将学习:

🌟 哈夫曼树
🌟 贪心思想
🌟 文件压缩
🌟 神奇编码魔法!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 17:18:07

单北斗GNSS在大坝变形监测中的应用与维护解决方案

单北斗GNSS在大坝变形监测中的应用提供了全面的技术支持&#xff0c;能够实时监控大坝结构的微小变动。该系统借助卫星信号&#xff0c;准确获取三维定位数据&#xff0c;帮助工程师及早识别潜在风险。利用整合不同传感器数据&#xff0c;单北斗变形监测系统提升了监测的准确性…

作者头像 李华
网站建设 2026/5/11 17:16:45

云音乐歌词获取神器:一键下载网易云与QQ音乐高品质LRC歌词

云音乐歌词获取神器&#xff1a;一键下载网易云与QQ音乐高品质LRC歌词 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 还在为寻找准确的音乐歌词而烦恼吗&#xff1f;这款…

作者头像 李华
网站建设 2026/5/11 17:08:58

Efficient-KAN高效神经网络:PyTorch实现的完整安装与配置教程

Efficient-KAN高效神经网络&#xff1a;PyTorch实现的完整安装与配置教程 【免费下载链接】efficient-kan An efficient pure-PyTorch implementation of Kolmogorov-Arnold Network (KAN). 项目地址: https://gitcode.com/GitHub_Trending/ef/efficient-kan 在深度学习…

作者头像 李华