西南科技大学OJ题 交换二叉树的孩子结点1105

交换二叉树的孩子结点

 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);
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章