在之前的经验傍边 , 我已经介绍了二叉搜刮树的插入与搜刮的操作 。 因为删除节点的操作 , 比拟较于搜刮与插入的操作 , 略显复杂 , 需要针对节点的子节点个数进行会商 。 是以 , 本章特意会商了二叉搜刮树的删除操作 。
需要这些哦
code::blocks
c++ 11编译器
方式/
1第一步简单介绍一下什么是二叉搜刮树(Binary Search Tree) 。 二叉搜刮树是二叉树的一种 , 一个节点最多只有两个子节点 , 可是节点的左子节点的值要小于节点的值 , 节点右子节点的值要年夜于节点的值 。
文章插图
2删除操作需要针对子节点个数进行会商 。
1、若是一个节点的子节点个数为0 , 就可以直接删除这个节点
文章插图
32、若是这个节点的子节点个数是一个 , 那么就需要再删除该节点之后 , 将该节点的子节点和父节点毗连到一路 。
文章插图
43、若是该节点的子节点个数为两个 , 那么这个环境比力复杂 。 这个时辰需要在该节点的右子树中找到最小的节点来替代该节点 。 这一步的操作需要经由过程递归来实现 。 具体代码看下一步 。
文章插图
5光说不做不可 , 这一步我们将展示上述三步的具体代码实现过程 。 下图所供给的代码是一个类的方式 。 仅供参考 。
文章插图
6为了整个法式的完整性 , 这一
, 我们供给整个二叉搜刮树的实现代码 , 包罗搜刮、插入、删除、寻找最年夜最小值 。 如下:
#include <iostream>
using namespace std;
//tree node
struct node
{
int key;
struct node *left,*right;
};
//construct new node
struct node* newnode(int item)
{
struct node* temp=new node;
temp->key=item;
temp->left=nullptr;
temp->right=nullptr;
return temp;
};
//inorder travel
void inorder(struct node* root)
{
if (root!=nullptr)
【二叉搜索树使用c++语言如何实现删除节点的操作】 {
inorder(root->left);
cout<<root->key<<l;
inorder(root->right);
}
}
class BinarySearchTree
{
public:
BinarySearchTree(){root=nullptr;};
//find the minimum value
struct node *findmin(struct node*t)
{
if (t==nullptr)
return nullptr;
推荐阅读
- 手机QQ班级群如何设置允许被搜索
- 手机优酷怎样搜索频道
- 松树简笔画
- 新浪微博的高级搜索在哪里?
- 英雄联盟lols10扭曲树精大树怎么出装加点
- 那一杯云南普洱古树茶
- 家里的发财树要多少天浇一次水
- 平安树第一次浇多少水
- 明日之后白树高地高分子薄膜宝箱位置
- 脑洞大大大106关,让青蛙跳的比树高,怎么过