//二叉排序树合并(多次插入)
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct TNode
{
int elem;
struct TNode *lchild,*rchild;
}TNode,*TNodePtr,*TreePtr;
TNodePtr Init_Tree(TreePtr T){
int e;
scanf("%d",&e);
if(e != -1)
{
T = (TNodePtr)malloc(sizeof(TNode));
T->elem = e;
T->lchild = Init_Tree(T->lchild);
T->rchild = Init_Tree(T->rchild);
}
else
{
T = NULL;
}
return T;
}
TreePtr Insert_BST(TreePtr T,int N){//插入
if(T == NULL)
{
TNodePtr S;
S = (TNodePtr)malloc(sizeof(TNode));
S->elem = N;
S->lchild = NULL;
S->rchild = NULL;
T = S;
}
else if(N < T->elem){
T->lchild = Insert_BST(T->lchild,N);
}
else if(N > T->elem){
T->rchild = Insert_BST(T->rchild,N);
}
return T;
}
void Merge_BST(TreePtr T1,TreePtr T2){
TNodePtr P;
P = T2;
if(P != NULL)
{
T1 = Insert_BST(T1,P->elem);
Merge_BST(T1,P->lchild);
Merge_BST(T1,P->rchild);
}
}
void Print_BST(TreePtr T){
if(T == NULL)
return;
else
{
Print_BST(T->lchild);
printf("%d ",T->elem);
Print_BST(T->rchild);
}
}
int main(){
TreePtr t1,t2;
t1 = Init_Tree(t1);
t2 = Init_Tree(t2);
Merge_BST(t1,t2);
Print_BST(t1);
return 0;
}
noj26、二叉排序树的合并
最新推荐文章于 2024-08-20 10:37:42 发布