二叉排序树的合并(C语言)

2023-11-06

二叉排序树的合并其实有好多方法了,反正就是把元素插入进去就好了,大不了两颗树都不建直接新建一个二叉排序树,函数也不是很难,如下:
在这里插入图片描述
在这里插入图片描述


#include<stdio.h>
#include<stdlib.h>

typedef struct BinTreeNode
{
    int data;
    struct BinTreeNode *Lchild;
    struct BinTreeNode *Rchild;
}BinTreeNode,*BinTree;

void CreateTree(BinTreeNode **T)//建立二叉树
{
    int elem;
    scanf("%d",&elem);
   if(elem==-1) *T=NULL;
     else{
            *T=(BinTreeNode*)malloc(sizeof(BinTreeNode));
            (*T)->data=elem;
        CreateTree(&((*T)->Lchild));
        CreateTree(&((*T)->Rchild));
     }
}

void InsertBinTree(BinTreeNode **T,int elem)//插入二叉排序树结点(因为要从上往下一步一步找,所以一次只能插一个,不能递归)
{
    if(*T==NULL)
    {
       *T=(BinTreeNode*)malloc(sizeof(BinTreeNode));
       (*T)->data=elem;
       (*T)->Lchild=NULL;
       (*T)->Rchild=NULL;
    }
    else if(elem<(*T)->data)
        InsertBinTree(&((*T)->Lchild),elem);
    else if(elem>(*T)->data)
        InsertBinTree(&((*T)->Rchild),elem);

}

void printOrder(BinTreeNode *T)//输出树
{
    if(T==NULL)return;
    printOrder(T->Lchild);
    printf("%d ",T->data);
    printOrder(T->Rchild);
}

void CombineTree(BinTreeNode **T1,BinTreeNode **T2)
{
    if(*T2)
    {
        CombineTree(&(*T1),&((*T2)->Lchild));
        InsertBinTree(&(*T1),(*T2)->data);
         CombineTree(&(*T1),&((*T2)->Rchild));
    }
}


int main()
{
   BinTreeNode *T1,*T2;
   CreateTree(&T1);
   CreateTree(&T2);
   CombineTree(&T1,&T2);
    printOrder(T1);
    /*
     BinTreeNode *T;
    int a,b,elem,key;
    CreateTree(&T);
    scanf("%d %d",&a,&b);
    scanf("%d",&elem);
    scanf("%d",&key);
    SelectRangeelem(T,a,b);
    printf("\n");
    InsertBinTree(&T,elem);
    printOrder(T);
    printf("\n");
    DelBST(T,key);
    printOrder(T);
    */
    //CreateBinTree(&T);
    //printOrder(T);
    //DelBST(T,12);
    //printOrder(T);
    //BinTreeNode *Tfind;
    //Tfind=SelectTree(T,48);
    //printf("  %d",Tfind->data);
    //if(SelectBinSortTree(T))
    //{
    //    printf("yes");
    //}
   // else printf("no");
    return 0;
}

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

二叉排序树的合并(C语言) 的相关文章

  • 字节跳动Java面试还要问网络知识?懂一点就好

    作者简介 CSDN2021博客之星亚军 新星计划导师 博客专家 哪吒多年工作总结 Java学习路线总结 搬砖工逆袭Java架构师 关注公众号 哪吒编程 回复1024 获取Java学习路线思维导图 大厂面试真题 加入万粉计划交流群 一起学习进

随机推荐