二叉树的创建与遍历
来源:互联网 发布:知乎 北京 皮肤科 编辑:程序博客网 时间:2024/05/17 19:20
用二叉链表存储二叉树,利用二叉树先序遍历结果递归的方法创建二叉树,对二叉树进行先序遍历,中序遍历,后序遍历。
序列:1 2 0 4 0 0 3 5 0 0 0
#include<iostream>#include<malloc.h>#define TRUE 1#define FALSE 0#define ok 1#define maxsize 100using namespace std;//typedef int status;//typedef int elemtype;typedef struct binode{int data;struct binode *lchild,*rchild;}binode,*bitree;int treecreated=FALSE;int creatbitree(bitree *T);int preordertraverse(bitree T);int inordertraverse(bitree T);int postordertraverse(bitree T);void main(){int choice=0;int leave=FALSE,flag;binode *BT;cout<<"================)二叉树演示程序=============="<<endl;do{cout<<"1.创建一个二叉树,按线序遍历结果输入,空用0表示"<<endl;cout<<"2.先序遍历二叉树,递归方式遍历二叉树"<<endl;cout<<"3.中序遍历二叉树,递归方式遍历二叉树"<<endl;cout<<"4.后序遍历二叉树,递归方式遍历二叉树"<<endl;cout<<"0.quit"<<endl;cout<<"----input your selection:"<<endl;cin>>choice;switch(choice){case 1:if(treecreated){cout<<"sorry,the tree has been already created!"<<endl;break;}cout<<"please put in number!"<<endl;flag=creatbitree(&BT);if(flag=ok){cout<<"ok,now a tree named BT is created.."<<endl;treecreated=TRUE;}break;case 2:if(!treecreated){cout<<"sorry,you need creat a tree for futher steps!"<<endl;break;}cout<<"pre order";preordertraverse(BT);cout<<endl;break;case 3:if(!treecreated){cout<<"sorry,you need creat a tree for futher steps!"<<endl;break;}cout<<"int order";inordertraverse(BT);cout<<endl;break;case 4:if(!treecreated){cout<<"sorry,you need creat a tree for futher steps!"<<endl;break;}cout<<"post order";postordertraverse(BT);cout<<endl;break;case 0:leave=TRUE;break;}}while(!leave);cout<<"thanks for using ,bye~"<<endl;}int creatbitree(bitree *T)//递归方法实现创建二叉树{int ch=0;cin>>ch;if(ch==0)(*T)=NULL;else{(*T)=(bitree)malloc(sizeof(binode));(*T)->data=ch;creatbitree(&(*T)->lchild);creatbitree(&(*T)->rchild);}return ok;}int preordertraverse(bitree T)//递归方法实现遍历{if(T){cout<<T->data<<" ";preordertraverse(T->lchild);preordertraverse(T->rchild);return ok;}elsereturn FALSE;}int inordertraverse(bitree T)//递归实现中序遍历{if(T!=NULL){inordertraverse(T->lchild);cout<<T->data<<" ";inordertraverse(T->rchild);return ok;}elsereturn FALSE;}int postordertraverse(bitree T){if(T){postordertraverse(T->lchild);postordertraverse(T->rchild);cout<<T->data<<" ";return ok;}elsereturn FALSE;}
- 二叉树的创建与遍历
- 二叉树的创建与遍历
- 二叉树的创建与遍历(递归)
- 二叉树的创建与遍历
- 二叉树的创建与遍历
- 二叉树的创建与遍历
- 二叉树的创建与遍历
- 二叉树的遍历与创建
- 二叉树的创建与遍历
- 二叉树的创建与层次遍历
- 二叉树的创建与递归遍历
- 二叉树的遍历与创建
- 二叉树的创建与遍历
- 二叉树的创建与遍历
- 非二叉树的创建与遍历
- 二叉树的创建与遍历
- 二叉树的遍历与创建
- 二叉树的创建与遍历1
- 第12周-任务3-做个摩托车开一开
- jQuery之按钮组件
- hostent结构体
- ARM高效C编程和优化--系统架构,C代码规范
- hdu2845 Beans
- 二叉树的创建与遍历
- DP算法入门(1)——多重背包问题(POJ1276题解)
- PSAPI学习笔记
- ARM高效C编程和优化--编译器,内存和Cache优化以及功耗管理
- 设置linux开机自动运行脚本
- MSSQLServer Binary类型字段 怎么用Delphi读取
- css:导入外部样式表的方法
- Mongoose源码剖析:Introduction and Installation
- Shanghai ** Product Development Plan