根据后序与中序遍历建树层序遍历输出
来源:互联网 发布:形容不出门知天下事 编辑:程序博客网 时间:2024/06/04 17:48
在我心里只要是二叉树就一定与递归有千丝万缕的关系,因此先递归建立左子树,再递归右子树,
像递归这种东西,一定要站在一个高度去看他,如果想的太复杂了会越陷越深,所以写代码是只要
给他一个宏观上的指令,就可以了。层序遍历吧,代码很简单,看一遍应该就理解了。
#include <cstdio>#include <cstring>#include <iostream>#include <queue>#include <cstdlib>using namespace std;int mid[100],post[100],pre[100];int n;struct node{ int c; node *lchild,*rchild;};//根据后序遍历与中序遍历递归建树node *postMidCreatTree(int len, int *mid, int *post){ int i; if(len<=0) return NULL; node *p = (node *)malloc(sizeof(node)); p->lchild = p-> rchild = NULL; p->c = post[len-1]; for(i=0; i<n; ++i) if(mid[i] == post[len-1]) break; int l=i; p->lchild = postMidCreatTree(l,mid,post); p->rchild = postMidCreatTree(len-l-1,mid+l+1,post+l); return p;}//层序遍历int levelTraverseTree(node *head){ queue<node *>q; q.push(head); int i=0; while(!q.empty()) { node *t; t = q.front(); q.pop(); pre[i++] = t->c; if(t->lchild) q.push(t->lchild); if(t->rchild) q.push(t->rchild); } return i;}int main(){ cin >> n; for(int i=0; i<n; ++i) cin >> post[i]; for(int i=0; i<n; ++i) cin >> mid[i]; node *head = (node *)malloc(sizeof(node)); head->lchild = head->rchild = NULL; head = postMidCreatTree(n,mid,post); int len = levelTraverseTree(head); for(int i=0; i<len-1; ++i) cout << pre[i] << " "; cout << pre[len-1] << endl; return 0;}
0 0
- 根据后序与中序遍历建树层序遍历输出
- 根据前序与中序遍历建树后以后序遍历输出
- 模板-根据中序,后序建树层次遍历输出
- EOJ1811 根据层号表示建树并后序遍历
- 树:前序建树,前序遍历,中序遍历,后序遍历,层序遍历
- UVa 548 Tree 根据后序遍历和中序遍历建树后DFS
- 二叉树 根据前序遍历和中序遍历 或者 后序遍历和中序遍历建树
- 先序建树,中序遍历、层序遍历
- 顺序建树后序遍历
- 由后序遍历和中序遍历建树
- 【LeetCode】根据前序和中序遍历建树 && 根据中序遍历和后续遍历建树
- 1127. ZigZagging on a Tree (30) 根据中+后输出层序遍历
- 二叉树——根据先序(后序)和中序遍历建树
- 二叉树-建树,层次遍历,先序遍历,中序遍历,后序遍历
- hdu 1805 Expressions (建树与层序遍历)
- 根据前序遍历、中序遍历构建二叉树,并后序遍历输出。
- 根据树的前序遍历和中序遍历构造树,输出后序遍历
- 根据中序遍历和前序遍历输出后序遍历,自己的代码
- 第140课: Spark面试经典系列之数据倾斜解决之并行度的深度使用
- 五分钟学会之ListView<simpleAdapter><BaseAdapter>
- <机器学习>自用笔记
- java枚举
- log4j配置
- 根据后序与中序遍历建树层序遍历输出
- android 内存进程管理分析
- Java服务器热部署的实现原理
- java后台调用 SAP RFC的配置和调用
- 不用算术运算符实现两个数的加法(按位异或)
- 区块链需要迈过的几道坎
- 【记录】输入捕获
- java 获取昨天的日期
- centor 6.5上yum安装mysql 5.7