二叉搜索树使用c++语言如何实现删除节点的操作

在之前的经验傍边 , 我已经介绍了二叉搜刮树的插入与搜刮的操作 。 因为删除节点的操作 , 比拟较于搜刮与插入的操作 , 略显复杂 , 需要针对节点的子节点个数进行会商 。 是以 , 本章特意会商了二叉搜刮树的删除操作 。

需要这些哦
code::blocks
c++ 11编译器
方式/
1第一步简单介绍一下什么是二叉搜刮树(Binary Search Tree) 。 二叉搜刮树是二叉树的一种 , 一个节点最多只有两个子节点 , 可是节点的左子节点的值要小于节点的值 , 节点右子节点的值要年夜于节点的值 。

二叉搜索树使用c++语言如何实现删除节点的操作

文章插图

2删除操作需要针对子节点个数进行会商 。
1、若是一个节点的子节点个数为0 , 就可以直接删除这个节点

二叉搜索树使用c++语言如何实现删除节点的操作

文章插图

32、若是这个节点的子节点个数是一个 , 那么就需要再删除该节点之后 , 将该节点的子节点和父节点毗连到一路 。

二叉搜索树使用c++语言如何实现删除节点的操作

文章插图

43、若是该节点的子节点个数为两个 , 那么这个环境比力复杂 。 这个时辰需要在该节点的右子树中找到最小的节点来替代该节点 。 这一步的操作需要经由过程递归来实现 。 具体代码看下一步 。

二叉搜索树使用c++语言如何实现删除节点的操作

文章插图

5光说不做不可 , 这一步我们将展示上述三步的具体代码实现过程 。 下图所供给的代码是一个类的方式 。 仅供参考 。

二叉搜索树使用c++语言如何实现删除节点的操作

文章插图

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;

推荐阅读