二叉树的链式存储,先序建树,以及4种遍历方式
来源:互联网 发布:网络歌手小右个人 编辑:程序博客网 时间:2024/05/18 18:18
#include<iostream>//#include<malloc.h> //c malloc和free,C++ new和delete using namespace std;//二叉链表方式,最常用 #define MAXSIZE 100 typedef char ElementType;struct BTNode{ElementType data;BTNode *lchild;BTNode *rchild;};//先序创建二叉树 BTNode * CreateTree(){BTNode * T=new BTNode;//(BTNode *)malloc(sizeof(BTNode))char ch;cin>>ch;//输入 if(ch=='#'){return NULL;}else{T->data=ch;T->lchild=CreateTree();T->rchild=CreateTree();} return T;}//先序遍历 void PreOrder(BTNode * T){//这步判断一定要有,处理建树时的return NULL if(T){ cout<<T->data;PreOrder(T->lchild);PreOrder(T->rchild);}} //中序遍历void InOrder(BTNode * T){//这步判断一定要有,处理建树时的return NULL if(T){InOrder(T->lchild);cout<<T->data;InOrder(T->rchild);} } //后序遍历void PostOrder(BTNode * T){//这步判断一定要有,处理建树时的return NULL if(T){PostOrder(T->lchild);PostOrder(T->rchild);cout<<T->data;} }//层次遍历,采用顺序循环队列 void LevelOrder(BTNode * T){//这步判断一定要有,处理建树时的return NULL if(T){ BTNode * queue[MAXSIZE], * p; //BTNode类型指针数组和BTNode类型指针变量 int front,rear;front=rear=0;//若初始 front=rear=0;入队:指针+1--元素入队,出队:指针+1--出队, 栈空条件:front==rear,栈满条件:(rear+1)%MAXSIZE==front //根节点入队,rear=(rear+1)%MAXSIZE; queue[rear]=T;while(front!=rear){//出队 front=(front+1)%MAXSIZE;p=queue[front];//输出 cout<<p->data;//左右孩子入队 if(p->lchild){rear=(rear+1)%MAXSIZE; queue[rear]=p->lchild;}if(p->rchild){rear=(rear+1)%MAXSIZE;queue[rear]=p->rchild; }} } } int main(){//freopen("input.txt","r",stdin);//ABD###CE##F##BTNode * T;T=CreateTree();cout<<"先序遍历结果:"; PreOrder(T); cout<<endl;cout<<"中序遍历结果:"; InOrder(T); cout<<endl;cout<<"后序遍历结果:"; PostOrder(T); cout<<endl;cout<<"层次遍历结果:"; LevelOrder(T); cout<<endl; return 0;}
关于先序建树
0 0
- 二叉树的链式存储,先序建树,以及4种遍历方式
- BST二叉搜索树的建树和先序遍历
- HDU 5444 二叉树的遍历,先根据先序遍历建树
- 二叉树的基本操作(非递归前中后遍历,先序,表达式建树,复制二叉树)
- 华中科技-二叉树遍历1184,先序建树
- 二叉树先序建树及先序遍历
- 链式存储二叉树(先序)
- C++实现链式二叉树,采用非递归的方式先序,中序,后序遍历二叉树
- 二叉树的二叉链表存储结构构建以及先序遍历
- 数据结构六:二叉树的先序建树与中序的非递归遍历算法
- 二叉树的操作(建树,先序遍历,交换左右子树,销毁
- 二叉树的先序遍历、中序遍历以及后序遍历(递归以及非递归方式)
- 二叉树-建树,层次遍历,先序遍历,中序遍历,后序遍历
- (学习java)二叉树的链式实现以及三种遍历方式
- 数据结构--二叉树---由二叉树的先序和中序序列建树(二叉树的存储)
- 二叉树-链式存储的遍历
- c/c++实现利用二叉树的先序遍历和中序遍历序列重建树
- sdibt 2746 二叉树的输入 (先序建树)
- SVM处理mnist字体库
- RSA 数据加密解密
- Android日常错误-----app按home键,再次点击图标直接进入APP,以及APP保活问题
- Linux命令中Ctrl+z、Ctrl+c和Ctrl+d的区别和使用
- 猜神童年龄
- 二叉树的链式存储,先序建树,以及4种遍历方式
- Kaldi学习笔记(二)
- Hdu 3401 题解 单调队列优化DP
- oracle分析函数系列之rank,dense_rank,row_number:实现排名策略
- WIN7 双系统安装
- java静态内部类与普通内部类
- Java TCP和UDP简介
- 常用排序算法-冒泡排序
- ModuleNotFoundError: No module named 'Cookie'