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

二叉搜索树:C++ 实现

一、什么是二叉搜索树?

二叉搜索树(Binary Search Tree,BST)是一种基于二叉树的数据结构,满足以下特性:

  • 左子树所有节点值 < 根节点值
  • 右子树所有节点值 > 根节点值
  • 左右子树本身也是二叉搜索树

例如,下图是一棵二叉搜索树:

      6/ \3   8/ \   \1   4   9

二、操作实现(C++)

1. 结点定义

template <class K>
struct BSTNode {K _key;                // 节点值BSTNode* _left;        // 左子树BSTNode* _right;       // 右子树BSTNode(const K& key): _key(key), _left(nullptr), _right(nullptr) {}
};

2. 插入操作

template <class K>
class BSTree {
public:void Insert(const K& key) {if (_root == nullptr) {_root = new BSTNode<K>(key);return;}BSTNode<K>* parent = nullptr;BSTNode<K>* cur = _root;while (cur) {if (key < cur->_key) {parent = cur;cur = cur->_left;} else if (key > cur->_key) {parent = cur;cur = cur->_right;} else {return; // 重复值不插入}}if (key < parent->_key) {parent->_left = new BSTNode<K>(key);} else {parent->_right = new BSTNode<K>(key);}}private:BSTNode<K>* _root = nullptr;
};

3. 查找操作

bool Find(const K& key) {BSTNode<K>* cur = _root;while (cur) {if (key > cur->_key) {cur = cur->_right;} else if (key < cur->_key) {cur = cur->_left;} else {return true; // 找到目标}}return false; // 未找到
}

4. 中序遍历(验证有序性)

void InOrder() {_InOrder(_root);
}void _InOrder(BSTNode<K>* root) {if (root == nullptr) return;_InOrder(root->_left);cout << root->_key << " ";_InOrder(root->_right);
}

三、复杂度

操作平均时间复杂度最坏时间复杂度
插入O(log n)O(n)
查找O(log n)O(n)
删除O(log n)O(n)

注意:最坏情况是树退化为链表(如按顺序插入),此时性能接近线性表。为避免这种情况,可使用平衡二叉搜索树(如 AVL 树、红黑树)。

总结

  • 优点:插入、查找、删除操作平均效率高,结构灵活。
  • 缺点:最坏情况下性能退化,需通过平衡树优化。
  • 进阶方向:学习 AVL 树、红黑树等自平衡二叉搜索树。

二叉搜索树 = 有序 + 二叉树

http://www.dtcms.com/a/598900.html

相关文章:

  • 网站服务器和ftp空间视频交易类网页
  • 贵州手机网站建设网站建设的什么是开发实施注意什么
  • 怎么学习计算机编程 | 适合初学者的学习路线与技巧
  • 做学校网站素材图片素材孝感做网站
  • 下列关于网站开发propulsion wordpress
  • 苏州网站制作设计禁止显示网站目录
  • 第三章 线性结构与栈
  • 优化志愿网站关于网站建设的入门书
  • 做网站的学什么网站建设课程设计百度文库
  • 大数据成矿预测系列(九) | 数据的“自我画像”:自编码器如何实现非监督下的“特征学习”
  • 装修公司网站 源码网站后台权限管理怎么做的
  • 网站开发流程进度规划百度搜索排名机制
  • 专门做鞋的网站中国网站设计欣赏
  • 网站推广策略成功的案例网站更新维护页面
  • 解锁懒加载:提升性能的神奇魔法
  • 那里可以做PC28网站的好看的 网站正在建设中源码
  • Vue项目集成bootstrap步骤及动态静态修改属性样式完整示例
  • 个人网站设计分析上海高玩seo
  • 大型门户网站建设是什么wordpress首页透明
  • 织梦做网站的教程惠州做网站广告
  • 做58同城这样的网站delphi网站开发教程
  • 《中医基础理论》- 番外篇-五神脏详解
  • 简述网站一般建设的流程图济南建设设备安装有限责任公司官网
  • 规划建立一个网站 项目成品网站nike源码1688
  • 广州网站建设公司网络安全优化中企动力北京总部地址
  • JavaScript基础知识总结(五)面向对象与原型,深浅拷贝,防抖节流
  • 韶关市住房和城乡建设局网站有限责任公司章程
  • 网站设计费报价表国际军事新闻最新消息
  • wls科普
  • 设计未来,解锁云端高效创作新纪元