数据结构(四)二叉树的遍历

问题:利用二叉链表建立一棵二叉树,分别采用先序、中序和后序遍历该二叉树,并输出遍历的序列。

考察二叉树的结构特征,以及链式存储结构的特点及程序设计方法

#include<stdio.h> 

#include<stdlib.h> 

#define MAX 100 

  

typedef struct BiTNode

{          //定义二叉树 

    char data; 

    struct BiTNode *lchild,*rchild; 

}BiTNode,*BiTree; 

 

 

void CreateBiTree(BiTree *T)

    char data; 

    //按先序次序输入二叉树中结点的值(一个字符),‘#’表示空树 

    scanf("%c",&data); 

    if(data == '#')

    { 

        *T = NULL; 

    } 

    else{ 

        *T =(BiTree)malloc(sizeof(BiTNode)); 

        (*T)->data = data;           //生成根结点

       CreateBiTree(&(*T)->lchild); //构造左子树  

       CreateBiTree(&(*T)->rchild); //构造右子树

    } 

}   

void Visit(BiTree T)

{              //输出 

 

 

    if(T->data != '#'){ 

        printf("%c",T->data); 

    } 

void PreOrder(BiTree T)

{          //先序遍历 

 

 

    if(T != NULL)

    { 

      

        Visit(T);              //访问根节点

        PreOrder(T->lchild);  //访问左子结点 

        PreOrder(T->rchild);  //访问右子结点

    } 

void InOrder(BiTree T)

{        //中序遍历 

 

    if(T != NULL){ 

        InOrder(T->lchild);   //访问左子结点 

        Visit(T);            //访问根节点  

        InOrder(T->rchild);  //访问右子结点

    } 

void PostOrder(BiTree T)

{         //后序遍历 

 

    if(T != NULL)

    { 

        PostOrder(T->lchild);    //访问左子结点

        PostOrder(T->rchild);  //访问右子结点 

        Visit(T);             //访问根节点 

    } 

  

int main() 

    BiTree T; 

    printf("Please input binary tree:"); 

    CreateBiTree(&T); 

    printf("\npreodertraversal:"); 

    PreOrder(T); 

    printf("\ninoder traversal:"); 

    InOrder(T); 

    printf("\nPostordertraversal:"); 

    PostOrder(T); 

    return 0; 

}  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值