当前位置: 首页 > news >正文

GESP6级C++考试语法知识(三十二、二叉搜索树(BST)(二、BST插入与构建 ))

第二课《魔法图书管理员——BST插入与构建》故事开始魔法图书馆的新危机1、上节课。我们已经认识了二叉搜索树BST2、知道了左边小 右边大还能快速找书3、可是新的问题来了4、每天。都会有新的魔法书送进图书馆。例如《火焰龙咒语》《隐身术大全》《100种糖果魔法》图书管理员爷爷急坏了“新书到底该放哪里呀”5、因为如果乱放。BST 就会失去魔法力量6、于是今天。我们要学习BST到底是怎么“长出来”的7、也就是BST插入Insert第一部分BST不是画出来的1、有的同学会以为BST是老师画出来的其实不是2、BST是“长出来”的就像种树3、数字一个一个插进去。树就慢慢长出来了。4、今天我们的任务依次插入8 3 10 1 6 14看看 BST 怎么生长第二部分插入第一个数字1、插入8现在树是空的什么都没有。2、于是8 来了。它说“我要住进图书馆”3、因为现在没人。所以8直接成为树根4、结果85、规则第一位来到的数字会成为根节点第三部分插入31、现在树里已经有82、新书3来了。3、开始比较1第一步比较3 和 8因为3 8所以往左边走2左边有没有人没有空的3于是3住进去4结果8 / 34、插入口诀1比当前节点小往左走。2比当前节点大往右走。3找到空位插进去第四部分插入101、现在树8 / 32、新书10来了。3、开始比较10 8所以往右边走4、右边没人。于是10住进去5、结果8 / \ 3 10第五部分插入1开始变有趣了1、现在树8 / \ 3 102、新书1来了。3、第一步1 8往左。来到32、第二步1 3继续往左。3、左边没人于是1住进去4、结果8 / \ 3 10 / 15、发现了吗BST插入其实像“闯关找房间”每次比较小了往左大了往右直到找到空位置。第六部分插入61、现在轮到62、第一步6 8往左。3、第二步来到3。6 3往右。4、右边没人。6住进去5、结果8 / \ 3 10 / \ 1 6第七部分插入141、现在轮到142、第一步14 8往右。3、来到10。14 10继续右。4、没人14住进去5、最终8 / \ 3 10 / \ \ 1 6 14一棵完整BST诞生啦第八部分BST插入参考代码现在开始真正写程序BST插入函数Node* insert(Node* root, int x) { // 找到空位置 if(root NULL) { return new Node(x); } // 去左边 if(x root-val) { root-left insert(root-left, x); } // 去右边 else if(x root-val) { root-right insert(root-right, x); } return root; }第九部分一步一步拆解代码1、第一步if(root NULL) { return new Node(x); }2、什么意思1表示“找到空房间啦”2于是新建节点。3、第二步if(x root-val)什么意思1例如3 82说明3应该住左边。3于是root-left insert(root-left, x);继续去左边寻找位置。4、第三步else if(x root-val)表示目标更大。去右边。5、核心思想其实只有一句话一路比较大小直到找到空位置第十部分完整构建程序#include iostream using namespace std; struct Node { int val; Node* left; Node* right; Node(int x) { val x; left NULL; right NULL; } }; // 插入函数 Node* insert(Node* root, int x) { if(root NULL) { return new Node(x); } if(x root-val) { root-left insert(root-left, x); } else if(x root-val) { root-right insert(root-right, x); } return root; } // 中序遍历 void inorder(Node* root) { if(root NULL) { return; } inorder(root-left); cout root-val ; inorder(root-right); } int main() { Node* root NULL; int a[] {8, 3, 10, 1, 6, 14}; for(int i 0; i 6; i) { root insert(root, a[i]); } cout BST中序遍历 endl; inorder(root); return 0; }1、程序输出1 3 6 8 10 142、神奇现象明明插入顺序是8 3 10 1 6 14结果输出1 3 6 8 10 14自动变有序了3、这是BST最神奇的地方“树居然会排序”第十一部分特别重要的知识点1、插入顺序会影响树形2、例如插入1 2 3 4 53、会变成1 \ 2 \ 3 \ 4 \ 54、树长歪了这样搜索会变慢后面课程会详细讲。第十二部分课堂互动小游戏游戏1同学们当节点1、汉克老师依次报8 3 10 1 62、同学们自己决定站左边站右边最后形成真人BST特别有趣游戏2谁的位置错了1、汉克老师故意摆错8 \ 32、同学们来找错误。第十三部分本课总结今天最重要的内容1、BST插入规则小了往左大了往右2、BST是怎么形成的一个数字一个数字长出来3、BST最核心思想通过比较大小寻找位置4、记住一句话BST不是“画出来”的。而是“长出来”的。
http://www.zskr.cn/news/1405835.html

相关文章:

  • Outfit字体:9种字重免费开源几何无衬线字体完全指南 [特殊字符]
  • 多发射架构下定制指令自动识别:基于多属性决策的ISE优化方法
  • 简单学习 --> 多模态(看图听音的大模型)
  • 基于H∞最优控制的点云姿态估计:CPU单线程实现高鲁棒性三维配准
  • 多线程踩坑实录:C#上位机死锁问题的终极解决
  • 2026陕西玻璃钢景观雕塑“匠心之选”:从材质性能到场景落地,东宇雕塑凭硬实力定义区域标杆 - 深度智识库
  • 城配物流想降本增效?先把这几件事管起来
  • 2026 年防爆控制箱厂家实力测评:智能防爆引领安全新高度 - 深度智识库
  • WeChatPad:打破设备限制,让手机也能享受微信平板模式的双设备登录体验
  • 2026导轨油实力工厂推荐排行榜:工业润滑源头厂家综合实力实测 - 变量人生001
  • 如何永久保存微信聊天记录:三步搞定数据留存与情感分析
  • 广域测量导向的电力系统动态等值与应用【附程序】
  • 3步搞定跨平台网络资源下载:res-downloader快速上手终极指南
  • 如何轻松获取智慧教育平台电子课本:tchMaterial-parser完全指南
  • 成都千恩包装:新都靠谱的木托盘定制公司选哪家 - LYL仔仔
  • 2026空气悬浮风机厂家测评:核心技术与服务能力深度解析 - 资讯纵览
  • 5个步骤实现Windows系统性能优化:开源工具实战指南
  • strace 和 perf:Linux 进程调试和性能分析深度指南
  • GeoSeg:突破性混合Transformer架构实现遥感图像智能分割效率革命
  • Hermes Agent 2026最新安装教程:全平台一键部署+避坑指南
  • 探索openpilot:开源自动驾驶系统的完整上手指南
  • 紧急更新!OpenAI政策突变后,ChatGPT画布必须重填的4个核心模块(24小时内失效)
  • 2026中国B2B企业服务业GEO白皮书:从产业洞察到优化实践 - 罗兰艺境GEO
  • 终极osu!直播神器:KeyOverlay键盘可视化工具完全指南
  • ChatGPT数据跨境合规红线:3大高危场景、5类处罚案例及GDPR/CCPA/《生成式AI服务管理暂行办法》三重对照表
  • 基于FPGA的硬件在环测试:构建智能医疗设备数字孪生验证平台
  • FactoryBluePrints终极蓝图库:戴森球计划工厂建设从入门到精通完全指南
  • 在自动化数据处理场景中利用Taotoken多模型能力提升效率
  • 硬件安全必修课:扫描攻击与JTAG滥用的原理、威胁与防护方案
  • 【MySQL全面教学】MySQL锁机制与并发控制Day10(2026年)