西南科技大學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);
}

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