一直没独立想明白的递归问题。。。。。。。。。。
#include <stdio.h>
#include <malloc.h>
#define false 0
#define true 1
typedef int status;
typedef int elemtype;
typedef struct BiTNode {
elemtype data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
BiTree creat(){ //按扩展前序建二叉树;
BiTree t;int x;
scanf("%d",&x);
if (x==0) t = NULL;
else
{
t = (BiTree)malloc(sizeof(BiTNode));
t->data = x;
t->lchild = creat();
t->rchild = creat();
}
return t;
}
void print(BiTree bt)
{
if (bt!=NULL)
{
printf ("%d", bt->data);
print(bt->lchild);
print(bt->rchild);
}
}
BiTree swap(BiTree B)
{//交换二叉树B的左右树
if(B != NULL)
{
swap(B->lchild);
swap(B->rchild);
BiTree temp = B->lchild;
B->lchild = B->rchild;
B->rchild = temp;
}
}
int main()
{
printf("正在按扩展前序建二叉树:\n");
BiTree bt = creat();
printf("原二叉树前序遍历序列为:\n");
print(bt);
swap(bt);
printf("交换后的二叉树前序遍历序列为:\n");
print(bt);
return 0;
}