PTA 7-1 二叉树的创建与遍历

7-1 二叉树的创建与遍历 (16 分)

通过带空指针信息的先根序列(亦称先序序列)创建二叉树,并进行先根(先序)、中根(中序)、后根(后序)遍历。二叉树结点数据域值为不等于0的整数(可能是正数也可能是负数),空指针用0表示,例如1 5 8 0 0 0 6 0 0表示如下图的二叉树。

PTA 7-1 二叉树的创建与遍历_第1张图片

输入格式:

输入为一组用空格间隔的整数,表示带空指针信息的二叉树先根序列。其中空指针信息用0表示。二叉树结点个数不超过150000,高度不超过6000。输入数据保证二叉树各结点数据值互不相等。

输出格式:

输出为3行整数,每个整数后一个空格。第1行为该二叉树的先根序列,第2行为中根序列,第3行为后根序列。

输入样例:

1 5 8 0 0 0 6 0 0

输出样例:

1 5 8 6 
8 5 1 6 
8 5 6 1 
#include 
#include 
typedef int ElementType;
typedef struct BiTNode{
    ElementType data;
    struct BiTNode *lchild;
    struct BiTNode *rchild;
}BiTNode,*BiTree;

BiTree creat()
{
    int ch;
    BiTree T;
    scanf("%d",&ch);
	if(ch == 0)
    {
	    return NULL;
    }
    else
    {
        T = (BiTNode*)malloc(sizeof(BiTNode));
        T->data = ch;
        T->lchild = creat();
        T->rchild = creat();
    }
    return T;
}

void DLR(BiTree T)
{
    if(T)
    {
        printf("%d ",T->data);
        DLR(T->lchild);
        DLR(T->rchild);
    }
}

void LDR(BiTree T)
{
    if(T)
    {
        LDR(T->lchild);
        printf("%d ",T->data);
        LDR(T->rchild);
    }
}

void LRD(BiTree T)
{
    if(T)
    {
        LRD(T->lchild);
        LRD(T->rchild);
        printf("%d ",T->data);
    }
}

int main()
{
    BiTree T = creat();
    DLR(T);
    printf("\n");
    LDR(T);
    printf("\n");
    LRD(T);
    return 0;
}

 

你可能感兴趣的:(数据结构)