如何用c++实现一个二叉搜索树 节点的插入、查找和删除【数据结构】


BST的插入、查找、删除操作均基于左小右大性质:插入递归至空位新增叶子;查找递归或迭代单路径比对;删除分三类——无子直接删、单子顶替、双子用中序前驱/后继替换并递归删。

如何用c++实现一个二叉搜索树 节点的插入、查找和删除【数据结构】

节点定义与基本结构

二叉搜索树(BST)每个节点满足:左子树所有节点值

struct TreeNode {
  int val;
  TreeNode* left;
  TreeNode* right;
  TreeNode() : val(0), left(nullptr), right(nullptr) {}
  TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};

插入操作:递归实现,保持BST性质

从根开始比较,小于当前节点往左走,大于往右走;遇到空位置就新建节点插入。

TreeNode* insertIntoBST(TreeNode* root, int val) {
  if (!root) return new TreeNode(val);
  if (val val) {
    root->left = insertIntoBST(root->left, val);
  } else {
    root->right = insertIntoBST(root->right, val);
  }
  return root;
}

立即学习“C++免费学习笔记(深入)”;

  • 插入不改变原有结构,只新增叶子节点
  • 重复值可按需求处理(如忽略、或允许重复并插入右子树)
  • 非递归版本可用 while 循环 + 指针追踪父节点实现

查找操作:简单递归或迭代

利用BST有序性,每次比较后只进一个子树,时间复杂度平均 O(log n)。

图酷AI 图酷AI

下载即用!可以免费使用的AI图像处理工具,致力于为用户提供最先进的AI图像处理技术,让图像编辑变得简单高效。

图酷AI 106 查看详情 图酷AI

TreeNode* searchBST(TreeNode* root, int val) {
  if (!root || root->val == val) return root;
  if (val val) {
    return searchBST(root->left, val);
  } else {
    return searchBST(root->right, val);
  }
}

  • 返回匹配节点指针,未找到返回 nullptr
  • 迭代写法更省内存:用 while 遍历,更新 root = root->left 或 root->right

删除操作:分三种情况处理

删除是 BST 最复杂的操作,需保证删除后仍为 BST。关键在“替代节点”的选择:

  • 无子节点(叶子):直接删,返回 nullptr
  • 只有一个子节点:用该子节点顶替被删节点
  • 有两个子节点:找左子树最大值(或右子树最小值)替换,再递归删除该替代值

TreeNode* deleteNode(TreeNode* root, int key) {
  if (!root) return nullptr;
  if (key val) {
    root->left = deleteNode(root->left, key);
  } else if (key > root->val) {
    root->right = deleteNode(root->right, key);
  } else {
    // 找到要删除的节点
    if (!root->left) return root->right;
    if (!root->right) return root->left;
    // 两个孩子:找左子树最大值(中序前驱)
    TreeNode* predecessor = root->left;
    while (predecessor->right) predecessor = predecessor->right;
    root->val = predecessor->val;
    root->left = deleteNode(root->left, predecessor->val);
  }
  return root;
}

注意:用右子树最小值(中序后继)同样可行,逻辑对称。选哪个取决于风格偏好,不影响正确性。

以上就是如何用c++++实现一个二叉搜索树 节点的插入、查找和删除【数据结构】的详细内容,更多请关注其它相关文章!


# c++  # red  # 递归  # 子树  # 数据结构  # 图酷  # 如何用  # node  # 最小值  # 网络营销推广目标  # 十个最seo  # 百度关键词排名新技术  # 蒲公英营销推广方案  # 滨江百度网站优化价格  # 潍坊seo页面优化  # 企业网站优化排名连锁  # 与其他  # 图像处理  # 如何使用  # 迭代  # 龙岗seo信息优化推广  # 网站开发推广亅薇  # 泉州网站防火墙优化 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: B站怎么开|直播| B站|直播|申请需要什么条件【新手必看】  mysql中如何配置字符集和排序规则_mysql字符集排序配置  响应式设计中动态背景颜色条的实现指南  Highcharts雷达图轴线交点数值标注指南  J*aScript 数值去小数位处理:多种方法与实践  铁路12306官网登录入口 铁路12306在线购票官方平台  顺丰快递在线查询系统 顺丰快递官方查单入口  iSpring三分屏制作教程  win11资源管理器标签页怎么用 Win11文件管理器多标签高效操作【新功能】  PPT页面尺寸怎么修改 PPT自定义幻灯片大小与方向设置【教程】  研招网官方网站招生平台入口_中国研究生招生信息网官网登录  如何用mysql开发用户注册登录功能_mysql用户注册登录数据库设计  《全民k歌》网页版最新登录入口一览  韩剧圈正版官网入口_韩剧圈官方指定登录  电脑“无法访问指定设备、路径或文件”怎么办?五种权限设置方法  无人机考证官网 中国民航无人机考证官网登录入口  韩小圈网页版PC端入口 韩小圈网页版官方网站入口  《深林》冬季章节图文攻略  firefox火狐浏览器最新官网主页_ firefox火狐浏览器平台入口直达官方链接  在J*a里什么是行为抽象_抽象行为对代码复用的提升作用  12306夜间购票失败? | 查看官方公布的暂停服务公告与应对方案  Win10共享文件夹设置方法 Win10局域网文件共享全攻略【教程】  J*aScript文本高亮功能优化:解决多词匹配错误与精确分割策略  视频转蓝光m2ts格式  漫蛙漫画直连入口 _ manwa官方备用入口实时检测  steam缓存文件在哪儿_steam缓存文件的路径查找方法与结构说明  《三角洲行动》战斗步枪与机枪类改装代码分享  顺丰快递收费标准查询_如何查看顺丰最新收费价格  MySQL多重关联查询:利用别名高效获取同一表的多个关联字段  win11讲述人怎么关闭 Win11屏幕朗读辅助功能禁用方法【技巧】  小米手机屏幕失灵乱跳怎么办 屏幕触控问题自检与临时解决方法【应急】  个人所得税办理入口 个人所得税综合所得年度汇算入口  解决CSS容器溢出问题:使用calc()实现精确布局与边距控制  告别繁琐SEO!如何使用SyliusSitemap插件自动化生成网站地图,提升搜索引擎排名  c++类和对象到底是什么_c++面向对象编程基础  电脑双系统如何安装和卸载 Windows和Linux双系统安装教程【详解】  C#解析并修改XML后保存 如何确保格式与编码的正确性  Fedora怎么安装 Fedora Workstation安装步骤  支付宝如何解绑云闪付_支付宝与云闪付账户关联解除方法  SQLAlchemy 2.0 与 Pydantic 模型类型安全集成指南  谷歌浏览器官网地址整理_谷歌浏览器新版直连2026稳定访问  电脑开不了机怎么办 电脑无法开机的解决方法  《原神》月之一版本新增书籍一览  动漫之家观看全集库 动漫之家免费资源网地址  人教版电子教材在线获取指南  画质怪兽120帧安卓和平精英免费版  Windows Audio服务启动失败怎么办_电脑没声音的终极服务修复法【修复】  抖音赚钱快速入门_新手必看的抖音赚钱步骤  126邮箱申请入口官网_126邮箱注册免费登录2025  谷歌邮箱官方入口链接 谷歌邮箱网页版电脑端快速登录 

 2025-12-17

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.