删除节点

/* Deleting a node from Binary search tree */
#include<iostream>
using namespace std;
struct Node {int data;struct Node *left;struct Node *right;
};
//Function to find minimum in a tree.
Node* FindMin(Node* root)
{while(root->left != NULL) root = root->left;return root;
}// Function to search a delete a value from tree.
struct Node* Delete(struct Node *root, int data) {if(root == NULL) return root; else if(data < root->data) root->left = Delete(root->left,data);else if (data > root->data) root->right = Delete(root->right,data);// Wohoo... I found you, Get ready to be deleted else {// Case 1:  No childif(root->left == NULL && root->right == NULL) { delete root;root = NULL;}//Case 2: One child else if(root->left == NULL) {struct Node *temp = root;root = root->right;delete temp;}else if(root->right == NULL) {struct Node *temp = root;root = root->left;delete temp;}// case 3: 2 childrenelse { struct Node *temp = FindMin(root->right);root->data = temp->data;root->right = Delete(root->right,temp->data);}}return root;
}//Function to visit nodes in Inorder
void Inorder(Node *root) {if(root == NULL) return;Inorder(root->left);       //Visit left subtreeprintf("%d ",root->data);  //Print dataInorder(root->right);      // Visit right subtree
}// Function to Insert Node in a Binary Search Tree
Node* Insert(Node *root,char data) {if(root == NULL) {root = new Node();root->data = data;root->left = root->right = NULL;}else if(data <= root->data)root->left = Insert(root->left,data);else root->right = Insert(root->right,data);return root;
}int main() {/*Code To Test the logicCreating an example tree5/ \3   10/ \   \1   4   11*/Node* root = NULL;root = Insert(root,5); root = Insert(root,10);root = Insert(root,3); root = Insert(root,4); root = Insert(root,1); root = Insert(root,11);// Deleting node with value 5, change this value to test other casesroot = Delete(root,5);//Print Nodes in Inordercout<<"Inorder: ";Inorder(root);cout<<"\n";
}

算法和数据结构是程序的第一秘诀,缺之算法和数据结构是编程的最大原因。

二叉树C++ | 实现删除节点_4相关推荐

  1. 最完整二叉树删除节点

    二叉树删除节点 在自己研究二叉树删除节点时,查网上资料时发现,网上大部分写的都是错的,主要错在当删除的节点既存在左子树,又存在右子树时,在中序遍历后获取后继节点后,大部分文章未考虑后继节点存在右子树的 ...

  2. 二叉树删除节点以及前中后序遍历

    public class BinaryTreeDemo {public static void main(String args[]){Employee emp1= new Employee(1,&q ...

  3. Javascript -- 二叉树(查找删除功能实现)

    查找最大值 //查找最大值,根节点的右边比根节点的值大 var maxNode = function (node) {if (node) {//只要不为空,一直搜寻while (node && ...

  4. 红黑树添加和删除节点原理

    红黑树添加和删除原理 一.概念 二.特性 三.应用 四.基本操作--插入 1.简介 2.插入规则 3.红黑树插入的4种情形 4.插入图例 五.基本操作--删除 1.红黑树删除的情形 2.插入图例 转载 ...

  5. BST 递归实现二叉树: 插入 删除 查找

    二叉树遍历: 前序遍历: 本身 左子树 右子树 中序遍历: 左子树 本身 右子树 从小到大排列 后续遍历: 左子树 右子树 本身 二叉树前驱: 当前节点左子树最大的节点 二叉树后继: 当前节点右子树最 ...

  6. 二叉搜索树(BST)删除节点--思路清晰

    前言:在学习BST时,发现查找插入等操作都很好理解和实现,而删除节点的操作情况比较复杂,故通过自己的理解整理如下,本文适合初学者理解并自己动手实现BST删除操作. 在很多文章中提到,删除节点可以考虑以 ...

  7. 算法:二叉搜索树BST - 删除节点 详解(Java实现)

    删除节点 删除节点存在 3 种情况,几乎所有类似博客都提到了这点.这 3 种情况分别如下: 没有左右子节点,可以直接删除 存在左节点或者右节点,删除后需要对子节点移动 同时存在左右子节点,不能简单的删 ...

  8. solr-cloud 集群动态增加、删除节点

    本次讲述动态增加节点基于上一章集群搭建的基础上来讲:https://blog.csdn.net/u013490585/article/details/86494476 上一章的例子中用了3台zk,4台 ...

  9. c语言结点初始化,C语言双向链表简单实现及图示(初始化/插入节点/删除节点)...

    -------------------------------------------- 双向链表 - - - - - - - - - - - - - - - - - - - - - - - - - ...

最新文章

  1. JVM体系结构101:了解您的虚拟机
  2. 云笔记/笔记软件工具
  3. ip查看是否在线_linux查看端口占用情况
  4. Linux自动注销登录的帐户
  5. Android移植之自定义ProgressBar
  6. SGU---104 DP
  7. c++ DLL-DEF-LIB
  8. 【距离GDOI:136天】 后缀数组中...
  9. 非合作博弈篇——非合作博弈论问题的表示(strategic form)
  10. MTK 刷机工具操作说明(多路)
  11. 人民币对澳元汇率的大数据分析与预测
  12. 2021年新版阿里云服务器价格表(收费标准报价)
  13. 福利:推荐一个免费的抠图网站
  14. 计算机可移动磁盘无法显示图片,移动硬盘不显示盘符原因及解决方法步骤介绍【图文详解】...
  15. 唐巧iOS博客好文列表
  16. 【云计算】一文了解裸金属服务器(一)
  17. DNS工作原理及解析过程
  18. 制作一个货币汇率转换器
  19. 虚拟串口软件:VSPD的使用
  20. java根据年份获取年份下的所有月份

热门文章

  1. c语言错误writing,C语言编译器的错误信息
  2. Android 短信数据库重要table字段解释
  3. Android笔记 - android 类型转化错误
  4. js学习 字符串常用方法
  5. c++语言中的循环语句有,C++语言中的循环语句
  6. 设置Markdown中展示Liquid(Jekyll)但不解析的方式
  7. 连接路由器后电脑连不上网_猫、路由器、交换机的区别
  8. Spark入门实战系列--4.Spark运行架构
  9. Spark 性能相关参数配置详解-任务调度篇
  10. is not a function_libcxx 的 std::function 源码分析