交换二叉树的孩子结点
1000(ms)
10000(kb)
1772 / 3458
编程程序实现将二叉树中所有结点的左右孩子互换。
输入
二叉树的先序序列(输入先序序列建立二叉树)。
输出
第一行为交换后的二叉树的中序序列
第二行为交换后的二叉树的先序序列
样例输入
ABD###C###
样例输出
CABD
ACBD
#include<stdio.h>
#include<malloc.h>
struct BTNode
{
char data;
BTNode *lchild;
BTNode *rchild;
};
void PreOrder(BTNode *&p)
{
char a;
scanf("%c",&a);
if(a=='#') p=NULL;
else
{
p=(BTNode *)malloc(sizeof(BTNode));
p->data=a;
PreOrder(p->lchild);
PreOrder(p->rchild);
}
}
void InOrder(BTNode *&p)
{
if(p!=NULL)
{
InOrder(p->rchild);
printf("%c",p->data);
InOrder(p->lchild);
}
}
void PostOrder(BTNode *&p)
{
if(p!=NULL)
{
printf("%c",p->data);
PostOrder(p->rchild);
PostOrder(p->lchild);
}
}
int main()
{
BTNode *p;
PreOrder(p);
InOrder(p);
printf("\n");
PostOrder(p);
}