二叉搜索树--C++

在这里插入图片描述

目录:

一.概念

二叉搜索树又称为二叉排序树,或者是一个空树,必须满足以下特点:

满足条件:

1.如果其中的左子树不为空,则左子树上所有的节点的值小于根节点的值
^
2.如果其中的右子树不为空,则右子树上所有的节点的值大于根节点的值
^
3.每个数据都是单一存在,不会重复

在这里插入图片描述

二.接口声明

//1.二叉树内部节点的构建
struct BNode
//2.查找对应的节点
Node* find(const T& val)
//3.拷贝出新的搜索二叉树
Node* copy(Node* root)
//4.插入一个元素
bool insert(const T& val)
//5.删除单一的元素
bool erase(const T& val)
//6.析构函数
~BTree()
//7.中序遍历方式打印
void _inorder(Node* root)

三.接口实现&原理

1.构造内部类

内部写的是所存储的数据和对应的左右子树的存储,包括对每一个节点的构造函数

template <class T>
struct BNode{
   

	T _data;					//对应的数据
	typedef BNode<T> Node;		//重命名
	Node* _left;				//左子树的节点
	Node* _right;				//右子树的节点

	BNode(const T& data)		//构造函数
		:_data(data)			//数据的初始化
		, _left(nullptr)		
		, _right(nullptr)		//左右节点初始化成nullptr
	{
   }
};

2.查找函数

在这里插入图片描述

1.从根节点开始比较大小
^
2.大于向右遍历,小于向左遍历,直到找到对应的值为止.

	Node* find(const T& val){
   

		Node* cur = _root;		//创建cur指向其根节点
		while (cur){
   			//在根节点存在的时候

			if (cur->_data == val)		//如果找到对应的值
				return cur;		//则直接返回
			else if (cur->_data > val)	//如果根节点的值大于要找的值,则更新到左子树进行遍历
				cur = cur->_left;
			else
				cur = cur->_right;		
  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值