C++实现BST需定义节点结构,支持插入、查找、删除:插入递归比较值并挂载;查找用迭代法O(1)空间;删除分三类——无子节点直接删、单子节点替代、双子节点用右子树最小值替换并递归删该值。
用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) {}
};
从根开始比较:比当前节点小则递归插入左子树,大则插入右子树;遇到空位置就新建节点。
TreeNode* insertIntoBST(TreeNode* root, int val) {
if (!root) return new TreeNode(val);
if (val < root->val)
root->left = insertIntoBST(root->left, val);
else
root->right = insertIntoBST(root->right, val);
return root;
}
利用BST性质逐层向下,无需递归,空间复杂度O(1):
TreeNode* searchBST(TreeNode* root, int val) {
while (root && root->val != val) {
root = (val < root->val) ? root->left : root->right;
}
return root;
}
找到目标节点后:
TreeNode* deleteNode(TreeNode* root, int key) {
if (!root) return nullptr;
if (key < root->val)
root->left = deleteNode(root->left, key);
else if (key > root->val)
root->right = deleteNode(root->right, key);
else {
if (!root->left) r
eturn root->right;
if (!root->right) return root->left;
TreeNode* minRight = root->right;
while (minRight->left) minRight = minRight->left;
root->val = minRight->val;
root->right = deleteNode(root->right, minRight->val);
}
return root;
}
基本上就这些。注意所有操作都依赖BST的有序性,插入/删除后结构仍保持BST性质。实际使用时建议封装成class,加size、中序遍历等辅助接口会更实用。
# node
# c++
# 封装
# 构造函数
# 递归
# 指针
# 数据结构
# 接口
# class
# 子树
# 最小值
# 三类
# 遍历
# 三种
# 迭代
# struct
# false
# php
相关文章:
如何在IIS中新建站点并配置端口与IP地址?
专业网站制作服务公司,有哪些网站可以免费发布招聘信息?
婚礼视频制作网站,学习*后期制作的网站有哪些?
javascript中的try catch异常捕获机制用法分析
如何在Golang中引入测试模块_Golang测试包导入与使用实践
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
如何配置WinSCP新建站点的密钥验证步骤?
高端网站建设与定制开发一站式解决方案 中企动力
香港服务器租用每月最低只需15元?
C++如何使用std::optional?(处理可选值)
微信小程序 五星评分(包括半颗星评分)实例代码
如何在自有机房高效搭建专业网站?
如何通过老薛主机一键快速建站?
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
建站之星后台搭建步骤解析:模板选择与产品管理实操指南
图册素材网站设计制作软件,图册的导出方式有几种?
seo网站制作优化,网站SEO优化步骤有哪些?
如何通过远程VPS快速搭建个人网站?
c++怎么用jemalloc c++替换默认内存分配器【性能】
音乐网站服务器如何优化API响应速度?
如何在西部数码注册域名并快速搭建网站?
建站之星如何防范黑客攻击与数据泄露?
教程网站设计制作软件,怎么创建自己的一个网站?
网页设计与网站制作内容,怎样注册网站?
*服务器网站为何频现安全漏洞?
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
如何通过商城免费建站系统源码自定义网站主题?
公司网站的制作公司,企业网站制作基本流程有哪些?
制作网站的模板软件,网站怎么建设?
XML的“混合内容”是什么 怎么用DTD或XSD定义
在线教育网站制作平台,山西立德教育官网?
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
如何制作网站标识牌,动态网站如何制作(教程)?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】
如何在宝塔面板中修改默认建站目录?
太原网站制作公司有哪些,网约车营运证查询官网?
免费视频制作网站,更新又快又好的免费电影网站?
如何使用Golang安装API文档生成工具_快速生成接口文档
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
上海网站制作开发公司,上海买房比较好的网站有哪些?
长沙做网站要多少钱,长沙国安网络怎么样?
建站之星安装路径如何正确选择及配置?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
制作公司内部网站有哪些,内网如何建网站?
如何选择高效可靠的多用户建站源码资源?
南京网站制作费用,南京远驱官方网站?
Python路径拼接规范_跨平台处理说明【指导】
*请认真填写需求信息,我们会在24小时内与您取得联系。