二叉树的遍历
来源:互联网 发布:navmesh 寻路算法 编辑:程序博客网 时间:2024/06/04 21:20
关于各种遍历是个什么东西?
http://jingyan.baidu.com/article/5553fa82ba04be65a3393462.html
#include <iostream>#include <sstream>#include <cstring>#include <cstdio>#include <cctype>#include <cmath>#include <map>#include <set>#include <list>#include <queue>#include <deque>#include <stack>#include <vector>#include <algorithm>#define inf 0x3f3f3f3f#define PI 3.14159265358979323#define SCD(a) scanf("%d",&a)#define SCDD(a,b) scanf("%d%d",&a,&b)#define SCF(a) scanf("%lf",&a)#define PTD(a) printf("%d\n",a)#define PTS(a) printf("%s\n",a)#define MST(a) memset(a, 0, sizeof(a))using namespace std;// HDOJconst int L = 10001;int n, m;struct BiTNode{ char data; BiTNode *lchild, *rchild;};BiTNode *T;void CreateBiTree(BiTNode* &T) //按先序建树{ char ch; ch = getchar(); if(ch=='#') T = NULL; else{ T = new BiTNode; T->data = ch; CreateBiTree(T->lchild); CreateBiTree(T->rchild); }}void PreOrderTraverse(BiTNode* &T) //先序{ if(T){ cout<<T->data; PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild); }}void InOrderTraverse(BiTNode* &T) //中序{ if(T){ InOrderTraverse(T->lchild); cout<<T->data; InOrderTraverse(T->rchild); }}void PosOrderTraverse(BiTNode* &T) //后序{ if(T){ PosOrderTraverse(T->lchild); PosOrderTraverse(T->rchild); cout<<T->data; }}void LevelOrderTraverse(BiTNode* &T) //层序{ queue<BiTNode*> q; BiTNode *p = T; if(p) q.push(p); while(!q.empty()){ p = q.front(); q.pop(); cout<<p->data; if(p->lchild) q.push(p->lchild); if(p->rchild) q.push(p->rchild); }}int LeafMount(BiTNode* &T) //叶子节点数{ if(!T) return 0; if(!T->lchild&&!T->rchild) return 1; return LeafMount(T->lchild) + LeafMount(T->rchild);}int main(){ int i ,j ,a ,b ,t; CreateBiTree(T); cout<<"先序:"<<endl; PreOrderTraverse(T); cout<<endl; cout<<"中序:"<<endl; InOrderTraverse(T); cout<<endl; cout<<"后序:"<<endl; PosOrderTraverse(T); cout<<endl; cout<<"层序:"<<endl; LevelOrderTraverse(T); cout<<endl; cout<<"叶子节点数:"<<endl; cout<<LeafMount(T)<<endl; return 0;}/*输入样例:ABC##DE#G##F###输出样例:先序:ABCDEGF中序:CBEGDFA后序:CGEFDBA层序:ABCDEFG叶子节点数:3*/
阅读全文
2 0
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- Hystrx权威指南--Hystrix请求缓存和COLLAPSER
- hiveql--建表
- 时间转换
- HDU-2017 多校训练赛1-补题
- 报表打印系统
- 二叉树的遍历
- java图形化界面编程之记事本
- 关于android图标美工设计尺寸与处理方法
- 杂乱
- React Native Build Tools版本错误解决方案
- 素数判定
- JS函数参数的理解
- ubuntu搭建推流服务器Nginx+rtmp
- 笔记:新手的Spark指南