UVA 548 根据中序和后序建立二叉树并求根到叶的最短路
来源:互联网 发布:斐讯efa中文安卓编程 编辑:程序博客网 时间:2024/05/20 02:27
题意:根据中序和后序建立二叉树并求根到叶的最短路
#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<sstream>#include<algorithm>#define inf 0x3f3f3f3fusing namespace std;const int MAXN=10010;int l[MAXN];int r[MAXN];int inorder[MAXN];int postorder[MAXN];int minx,pos;int build(int L1,int R1,int L2,int R2)//中序[L1,R1]和后序[L2,R2]建立一棵二叉树,返回根节点序号{ if(L1>R1||L2>R2) return 0; int root=postorder[R2]; int p=L1; while(inorder[p]!=root) p++; int cnt=p-L1;; l[root]=build(L1,p-1,L2,L2+cnt-1); r[root]=build(p+1,R1,L2+cnt,R2-1); return root;}void dfs(int t,int sum){ sum+=t; if(l[t]==0&&r[t]==0)//搜到叶节点就判断 { if(sum<minx) { minx=sum; pos=t; } return ; } if(l[t]>0) dfs(l[t],sum); if(r[t]>0) dfs(r[t],sum);}int main(){ string str; while(getline(cin,str)) { stringstream ss; ss<<str; int a; int k=0; while(ss>>a) { inorder[k++]=a; } getline(cin,str); stringstream sx; sx<<str; k=0; while(sx>>a) { postorder[k++]=a; } int root=build(0,k-1,0,k-1); minx=inf; dfs(root,0); cout<<pos<<endl; } return 0;}
0 0
- UVA 548 根据中序和后序建立二叉树并求根到叶的最短路
- 根据后序和中序建立二叉树
- 根据先序和中序或后序和中序建立二叉树及树的遍历
- 根据二叉树的先序序列和中序序列还原二叉树并打印后序序列
- NYOJ 848 STBE【由二叉树的先序和中序建立二叉树并得起后序】
- UVA548递归二叉树求路径和和根据中序和后序建立二叉树
- UVa 548 Tree(DFS) 根据中序和后序重建二叉树,数组实现和指针实现
- 根据先序序列和中序序列建立树并求其后序序列
- 根据二叉树的先序遍历和中序遍历建立二叉树
- 根据前序和中序建立二叉树
- 数据结构--java实现二叉树的先序、中序、后序、层次遍历及根据先序中序建立二叉树
- 由中序和后序建立二叉树,并前序输出
- NYOJ 756 重建二叉树【由二叉树的后序和中序建立二叉树并得先序】
- 根据二叉树的中序和后序还原二叉树
- 由前序和中序遍历建立二叉树并后序遍历输出二叉树
- 根据二叉树前序遍历和中序遍历的结果,重建出该二叉树并后序遍历之 java代码
- 根据后序和中序遍历重建二叉树
- 根据前序和中序遍历的结果建立二叉树
- 锚点使用总结
- 一次完整的HTTP事务是怎样一个过程?
- 利用jquery对MVC输出的json对象进行处理,修改日期格式及取字符串的一部分
- -01-摄像头DVP输入IP核设计【OV5640】
- sha、md5、decupt与加盐结合
- UVA 548 根据中序和后序建立二叉树并求根到叶的最短路
- EClipse 出现错误 The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
- linux下C语言多线程(第一篇)创建线程
- CentOS 6.8源码安装Redis
- Redis命令
- Scala范型
- SSH整合所遇到的问题(一)
- 面向对象语言设计六大原则
- C++第五次作业