交換二叉樹的孩子結點
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);
}