数据结构之二叉搜索树(Binary Search Tree)的C++实现

这篇博客的内容是自己在学习别人博客的基础上加上自己理解写下来的,通过这种方式让自己记的更加清楚。
更多详细内容参见大神博客:https://blog.csdn.net/ZYZMZM_/article/details/90633686#k_757
目录

  • 二叉搜索树的基本概念及建立
  • 二叉搜索树的特点
  • BST树的类模板
  • BST树的插入操作实现
  • BST树的删除操作实现
  • BST树的查找操作实现

**

二叉树的基本概念及建立

**
我们在对数据进行查找的时候可能是动态的即在查找时需要进行插入或者删除操作,二叉排序是就是这样一种实现高效查找和插入的结构。
二叉排序树(BInary Sort Tree),又称二叉查找树。它或是一颗空树,或者是具有下列性质的二叉树:

  • 若它的左子树不空,则左子树上的所有节点均小于它的根节点的值。
  • 若它的右子树不空,则它右子树的所有节点均大于它的根节点的值。
  • 它的左右子树也分别为二叉排序树。
  • 二叉排序树中没有键值相等的节点。
  • 中序遍历二叉排序树即可得到一个有序的序列。

如果我们想构建一颗二叉树,过程如下:
序列62,88,58,47,35,73,51,99,37,93可得
在这里插入图片描述
构造树的过程就是不断插入的过程,也是对无序进行排序的过程。

BST树的类模板

BST树通常采用二叉链表作为存储结构。

template<typename T>
class BSTree
{
public:
	   BSTree():_root(nullptr)
	   {};
private:	  
	  struct BSTNode
	  {
	  		   BSTNode(T _data):_data(data),_left(nullptr),_right(nullptr)
	  		   {} //初始化列表,当类中的结构体或类只有带参构造函数时,必须使用列表初始化结构体或类成员。
	  	      T _data;
	  	      BSTNode* _left;
	  	      BSTNode* _right;    
	  } 
	  BSTNode* _root;  //树的根节点。
}

BST树的插入操作实

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值