题目描述:
分析:
1.先序,创建二叉排序树。
2.在二叉排序树中插入一个值。
3.n 大于根节点在右子树中插入。
4.n 小于根节点在左子树中插入。
5.合并排序二叉树。
6.中序输出合并后的排序二叉树。
完整代码:
#include <iostream>
using namespace std;
typedef struct bstnode
{
int elem;
struct bstnode *lchild,*rchild;
}*bstree;
//先序,创建二叉排序树
bstree creat_bstree(bstree t)
{
int data;
cin>>data;
if(data==-1)
return NULL;
else
{
t=new struct bstnode;
t->elem=data;
t->lchild=creat_bstree(t->lchild);
t->rchild=creat_bstree(t->rchild);
return t;
}
}
//在二叉排序树中插入一个值
bstree insert_bstree(bstree t,int n)
{
if(t==NULL)
{
t=new struct bstnode;
t->elem=n;
t->lchild = t->rchild =NULL;
}
else
{
//n 大于根节点在右子树中插入
//n 小于根节点在左子树中插入
if(t->elem > n)
t->lchild = insert_bstree(t->lchild,n);
else if(t->elem < n)
t->rchild = insert_bstree(t->rchild,n);
}
return t;
}
//合并排序二叉树
bstree merge_bstree(bstree t,bstree s)
{
if(s)
{
t=insert_bstree(t,s->elem);
merge_bstree(t,s->lchild);
merge_bstree(t,s->rchild);
}
return t;
}
//中序输出合并后的排序二叉树
void print_bstree(bstree t)
{
if(t)
{
print_bstree(t->lchild);
cout<<t->elem<<" ";
print_bstree(t->rchild);
}
}
int main()
{
bstree t,s;
t=creat_bstree(t);
s=creat_bstree(s);
merge_bstree(t,s);
print_bstree(t);
return 0;
}