重建二叉树
2015-11-09 20:03
393 查看
题目描述
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。root->left=reConstructBinaryTree(preleft,inleft); root->right=reConstructBinaryTree(preright,inright); return root; } };/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: struct TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> in) { if (pre.empty() || in.empty() || pre.size()!=in.size()){ return NULL; } TreeNode* root=new TreeNode(pre[0]); int len=in.size(); int i,k=-1; vector<int> preleft,preright,inleft,inright; for(i=0;i<len;i++) { if(pre[0]==in[i]) { k=i; break; } } if(k==-1) return NULL; for(i=0;i<len;i++) { if(i<k) inleft.push_back(in[i]); if(i>k) inright.push_back(in[i]); } k=inleft.size()+1; for(i=1;i<pre.size();i++) if(i<k) preleft.push_back(pre[i]); else preright.push_back(pre[i]);
相关文章推荐
- linux使用FIO测试磁盘的iops
- Android 和 js 相互调用
- UVA11081 string
- Unity 配置静态excel 工作流程
- Win7只按开机键完成启动程序的任务
- 计算机视觉代码合集[转载]
- 【创龙TMS320C6748开发板试用】+ 定时器
- Context-----Activity,Application之间的交流使者
- 关于今天一整天的记录以及认知
- 打包运行自己的MapReduce程序
- SpringMVC访问静态资源的三种方式
- Javascript基本语法,a-href、img-src、button按钮使用时的跳转问题
- hdoj 练习题1.2.2 字符串反转
- 第121讲:Hadoop集群的格式化、集群运行实战解析等学习笔记
- Win7+Ubuntu双系统启动项修复总结
- 中国剩余定理
- muduo库阅读(9)——线程池
- VS2008LINK : fatal error LNK1000: Internal error during IncrBuildImage编译错误解决办法
- javascript 中关于call方法的详解。
- Codeforces Round #330 (Div. 2) B. Pasha and Phone