【数据结构】二叉树,以前序序列输入
发布时间:2020-12-15 06:32:47 所属栏目:安全 来源:网络整理
导读:/*实验5:建立一棵二叉树,以前序序列输入,以非空格字符表示结点的值,以空格字符表示空指针;实现该二叉树的前序遍历、中序遍历和后序遍历。*/#includestdio.h#includestdlib.h#define OK 1;typedef char TElemType;typedef int Status;//二叉树的存储表示
/* 实验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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |