二叉搜索树的插入建立与结点删除

//二叉搜索树的删除
#include <stdio.h>
#include <stdlib.h>
typedef struct Node
{
    int data;
    struct Node *leftChild;
    struct Node *rightChild;
}Node;
void Build_tree(Node **root);
void Insert_tree(Node **root,Node *new_node);
void Traverse_tree(Node **root);
void Remove_tree(Node **root,int value);//删除结点
Node** min(Node **root);//右子树中寻找中序下的第一个结点
void Build_tree(Node **root)//建树
{
    int value;
    Node *new_node;
    *root=NULL;
    new_node=NULL;
    printf("请输入数据,以负数作为结束\n");
    scanf("%d",&value);
    while(value>0)
    {
        new_node=(Node*)malloc(sizeof(Node));
        new_node->data=value;
        new_node->leftChild=NULL;
        new_node->rightChild=NULL;
        Insert_tree(root,new_node);
        scanf("%d",&value);
    }
    printf("二叉搜索树构建完成\n");
}
void Traverse_tree(Node **root)//中序遍历
{
    if(*root!=NULL)
    {
        Traverse_tree(&((*root)->leftChild));
        printf("%d ",(*root)->data);
        Traverse_tree(&((*root)->rightChild));
    }
}
void Insert_tree(Node **root,Node *new_node)//向树中插入新节点
{
    if(*root==NULL)
    *root=new_node;
       else if(((*root)->data)>new_node->data)
       {
           Insert_tree(&((*root)->leftChild),new_node);
       }
       else if(((*root)->data)<new_node->data)
       {
           Insert_tree(&((*root)->rightChild),new_node);
       }
}
void Remove_tree(Node **root,int x)
{
    Node **temp;
    if(*root!=NULL)
       if(x<((*root)->data)) //要删除的节点在左子树中
          Remove_tree(&((*root)->leftChild),x);
       else if(x>((*root)->data)) //要删除的节点在右子树中
          Remove_tree(&((*root)->rightChild),x);
       else if(((*root)->leftChild)!=NULL&&((*root)->rightChild)!=NULL)//要删除的就是当前节点
       {//当前结点有左子树和右子树
           printf("*1");
           temp=min(&((*root)->rightChild));//获得右子树中的最小值
           (*root)->data=(*temp)->data;
           Remove_tree(&((*root)->rightChild),(*root)->data);
       }
       else
       {//当前节点只有一个子树或没有子树
           if((*root)->leftChild!=NULL)//当前节点没有左子树
             *root=(*root)->leftChild;
           else if((*root)->rightChild!=NULL)//当前节点没有右子树
             *root=(*root)->rightChild;
           else
             *root=NULL;
       }
     else
       printf("二叉搜索树是空树或要删除的数据不存在!");
}
Node** min(Node** root)
{
   // printf("+");
    while((*root)->leftChild!=NULL) root=&((*root)->leftChild);
    return root;
}
int main(int argc,char *argv[])
{
    Node **root;
    int value;
    Build_tree(root);
    printf("\n用插入法建树的遍历结果为:\n");
    Traverse_tree(root);
    printf("\n请输入要删除的数:\n");
    scanf("%d",&value);
    Remove_tree(root,value);
    printf("\n删除后的遍历结果为:\n");
    Traverse_tree(root);
    system("PAUSE");
    return 0;
}

试了好多次应该没错。 
Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值