您的位置:首页 > 理论基础 > 数据结构算法

树的递归建立与遍历

2016-07-19 12:20 351 查看
#include<stdio.h>

#include<stdlib.h>

#define OVERFLOW 0

typedef char TElemType;

typedef struct BiTnode{
TElemType data;
struct BiTnode *lchild,*rchild;

}BiTnode,*BiTree;

//先序构造二叉树

int CreateBiTree(BiTree &T){
TElemType ch;
scanf("%c",&ch);
if(ch==' ') T=NULL;
else{

        T=(BiTnode*)malloc(sizeof(BiTnode));
if(!T) exit(OVERFLOW);
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return 1;

}

//前序遍历算法

void PreOrder(BiTree T){

    if( T != NULL ) {
printf("%c\t",T->data);
PreOrder ( T->lchild );
PreOrder ( T->rchild );

    }

}

//中序遍历算法

void InOrder(BiTree T){

    if ( T != NULL ) {

        InOrder ( T->lchild );

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

        InOrder ( T->rchild );

    }

}

//后序遍历算法

void PostOrder(BiTree T){

    if ( T != NULL ) {
PostOrder ( T->lchild );
PostOrder ( T->rchild );

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

    }

}

int main(){
BiTree T;
printf("请输入数据:\n");
CreateBiTree(T);
printf("\n前序遍历算法:\n");
PreOrder(T);
printf("\n中序遍历算法:\n");

        InOrder(T);
printf("\n后序遍历算法:\n");
PostOrder(T);
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 递归 遍历