二叉树的遍历——c语言

来源:互联网 发布:java技术的web服务器 编辑:程序博客网 时间:2024/06/05 06:20

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

#include<stdio.h>#include<stdlib.h>#define MAX 100typedef 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("以#代表空先序遍历\n输入二叉树:");    CreateBiTree(&T);    printf("先序遍历:\n");    PreOrder(T);    printf("\n");    printf("中序遍历:\n");    InOrder(T);    printf("\n");    printf("后序遍历:\n");    PostOrder(T);    return 0;}
输入输出示例:

以#代表空先序遍历输入二叉树:ab##c##先序遍历:a b c中序遍历:b a c后序遍历:b c a--------------------------------Process exited after 10.89 seconds with return value 0请按任意键继续. . .



0 0
原创粉丝点击