二叉树的建立和遍历

#include <stdio.h>
#include <stdlib.h>

typedef int Element ;
typedef struct BitTree{
    Element data;

    struct BitTree *lchild,*rchild;


}BitNode,*Bit;



//先序遍历创建二叉树
void creatorBitTree(Bit *T)
{
   int ch;
   scanf("%d",&ch);


    if(ch==-1)
    {
        *T=NULL;
    }

    else{
        *T=(Bit)malloc(sizeof(BitNode));
        (*T)->data=ch;
        creatorBitTree(&(*T)->lchild);
        creatorBitTree(&(*T)->rchild);

    }

}
//先序遍历二叉树
void PreOrderTraverse(Bit T)
{
    if(T!=NULL)
    {
	    printf("%d",T->data);
        PreOrderTraverse(T->lchild);
        PreOrderTraverse(T->rchild);
    }
}



//中序遍历二叉树
void InOrderTraverse(Bit T)
{
    if(T!=NULL)
    {
        InOrderTraverse(T->lchild);
        printf("%d",T->data);
        InOrderTraverse(T->rchild);
    }
}
//后序遍历二叉树
void PostOrderTraverse(Bit T)
{
    if(T!=NULL)
    {
        PostOrderTraverse(T->lchild);
        PostOrderTraverse(T->rchild);
        printf("%d",T->data);

    }
}

int main()
{
    Bit node=NULL;
    printf("请输入二叉树中的元素(以扩展先序遍历序列输入,其中0代表空子树):\n");
    creatorBitTree(&node);
    printf("先序遍历序列为:");
    PreOrderTraverse(node);
    printf("中序遍历序列为:");
    InOrderTraverse(node);
    printf("后序遍历序列为:");
    PostOrderTraverse(node);
    return 0;
}


分别输入:

1

2

4

-1

-1

5

-1

-1

3

6

-1

-1

7

-1

-1 

就可以构造如下图所示的二叉树了。-1表示空



运行结果如图所示:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值