树的输入、存储与遍历

来源:互联网 发布:乌克兰女人在中国知乎 编辑:程序博客网 时间:2024/06/09 17:11

问题描述:输入一棵二叉树,使用二叉链表结构存储二叉树,并用递归方法输出先序、中序、后序三种遍历结果。


#include<iostream>#include<cstdlib>using namespace std;typedef struct BiTNode {char data;BiTNode *lchild, *rchild;}BiTNode,*BiTree;void CreateBiTree(BiTree &T){//以先序输入数据char ch;ch=getchar();if(ch==' ') T=NULL;else {if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))) exit(0);T->data = ch;CreateBiTree(T->lchild);CreateBiTree(T->rchild);}}void PreOrderTraverse(BiTree &T) {//先序遍历if(T==NULL) return;if(T->data!=' ') cout<<T->data;PreOrderTraverse(T->lchild);PreOrderTraverse(T->rchild);}void InOrderTraverse(BiTree &T) {//中序遍历if(T==NULL) return;InOrderTraverse(T->lchild);if(T->data!=' ') cout<<T->data;InOrderTraverse(T->rchild);}void PostOrderTraverse(BiTree &T){//后序遍历if(T==NULL) return;PostOrderTraverse(T->lchild);PostOrderTraverse(T->rchild);if(T->data!=' ') cout<<T->data;}int main(){BiTree T;cout<<"Enter the numbers(Preorder):"<<endl;CreateBiTree(T);cout<<"The Preorder is:"<<endl;PreOrderTraverse(T);cout<<endl;cout<<"The Inorder is:"<<endl;InOrderTraverse(T);    cout<<endl;cout<<"The Posteorder is:"<<endl;PostOrderTraverse(T);cout<<endl;return 0;}


0 0
原创粉丝点击