【数据结构】二叉树,以前序序列输入

来源:互联网 发布:淘宝客服售后话术大全 编辑:程序博客网 时间:2024/05/01 16:56
/*实验5:建立一棵二叉树,以前序序列输入,以非空格字符表示结点的值,以空格字符表示空指针;实现该二叉树的前序遍历、中序遍历和后序遍历。*/#include<stdio.h>#include<stdlib.h>#define OK 1;typedef char TElemType;typedef int Status;//二叉树的存储表示方式typedef struct BiTNode{TElemType data;struct BiTNode *lchild,*rchild;//左右孩子指针}BiTNode,*BiTree;//创建二叉树,使用前序序列输入数据,空格表示空树Status CreateBiTree(BiTree &T){char ch ;scanf("%c",&ch);getchar();if(ch == ' ')T = NULL;else{if(!(T = (BiTNode *)malloc(sizeof(BiTNode))))exit(0);T->data = ch;//生成根节点CreateBiTree(T->lchild);//构造左子树CreateBiTree(T->rchild);//构造右子树}return OK;}//前序遍历Status PreOrderTraverse(BiTree T){if(T){printf("%c",T->data);PreOrderTraverse(T->lchild);PreOrderTraverse(T->rchild);}return OK;}//中序遍历Status InOrderTraverse(BiTree T){if(T){InOrderTraverse(T->lchild);printf("%c",T->data);InOrderTraverse(T->rchild);}return OK;}//后序遍历Status PostOrderTraverse(BiTree T){if(T){PostOrderTraverse(T->lchild);PostOrderTraverse(T->rchild);printf("%c",T->data);}return OK;}//主函数void main(){BiTree T;printf("请按照先序序列输入你的二叉树,空格表示空树\n");CreateBiTree(T);printf("前序遍历如下:\n");PreOrderTraverse(T);printf("\n");printf("中序遍历如下:\n");InOrderTraverse(T);printf("\n");printf("后序遍历如下:\n");PostOrderTraverse(T);printf("\n");}



By Mr.Z

原创粉丝点击