Leetcode:105. 从前序与中序遍历序列构造二叉树&106. 从中序与后序遍历序列构造二叉树

Leetcode:105. 从前序与中序遍历序列构造二叉树&106. 从中序与后序遍历序列构造二叉树

这道题是经典的模板题啦~

用前序中序后序遍历结果建树的模板请跳转到:前中后序建立树或者直接历遍

直接默写!!!

105. 从前序与中序遍历序列构造二叉树

/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<int> preOrder,inOrder;
TreeNode* built(int root,int start,int end,TreeNode* tree){
if(start>end) return NULL;
if(tree==NULL) tree=new TreeNode(preOrder[root]);
int index=start;
while(inOrder[index]!=preOrder[root]) index++;
tree->left=built(root+1,start,index-1,tree->left);
tree->right=built(root+index-start+1,index+1,end,tree->right);
return tree;
}
TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
preOrder=preorder,inOrder=inorder;
TreeNode* tree=NULL;
tree=built(0,0,preOrder.size()-1,tree);
return tree;
}
};

106. 从中序与后序遍历序列构造二叉树

/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<int> inOrder,postOrder;
TreeNode* build(int root,int start,int end,TreeNode* tree){
if(start>end) return NULL;
if(tree==NULL) tree=new TreeNode(postOrder[root]);
int index=start;
while(postOrder[root]!=inOrder[index]) index++;
tree->left=build(root-end+index-1,start,index-1,tree->left);
tree->right=build(root-1,index+1,end,tree->right);
return tree;
}
TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {
inOrder=inorder,postOrder=postorder;
TreeNode* tree=NULL;
tree=build(inOrder.size()-1,0,inOrder.size()-1,tree);
return tree;
}
};

最新文章

  1. eclipse svn异常:RA layer request failed 的解决方案
  2. 测试URL有效性
  3. LocalContainerEntityManagerFactoryBean
  4. ORACLE如何停止一个JOB
  5. 【转】unity3d 如何得到当前物体播放的动画
  6. HDU 4869 Turn the pokers (2014 多校联合第一场 I)
  7. 读书时间《JavaScript高级程序设计》七:表单
  8. 手机新闻网站,手持移动新闻,手机报client,jQuery Mobile手机新闻网站,手机新闻网站demo,新闻阅读器开发
  9. hdu_5908_Abelian Period(暴力)
  10. kotlin学习-初次见面
  11. Python语法教程总结规范
  12. 转载-&gt;CPU的内部架构和工作原理
  13. [PHP]PHP定时任务的实现
  14. centos6.9环境下JDK安装部署
  15. yarn虚拟cpu和虚拟内存
  16. 从零开始学做微信小程序,看这些就够了!
  17. Python中int()函数的用法浅析
  18. 【转】dd命令详解及利用dd测试磁盘性能
  19. sql语句的安全性考虑
  20. iOS:图像选取器控制器控件UIImagePickerController的详解

热门文章

  1. eclipse开发工具内打开某js文件总是用记事本方式打开的问题
  2. Java入门 - 语言基础 - 20.Stream和File和IO
  3. OAuth2.0的那点荒唐小秘密 -几个简单概念和原理
  4. 一图胜千言elasticsearch(lucene)的内存管理
  5. Windows 7原版映像中添加usb3.0驱动
  6. kuangbin专题专题十一 网络流 Dining POJ - 3281
  7. HttpApplication IHttpAsyncHandler, IHttpHandler, IComponent, IDisposable ps url System.Web.dll
  8. 创建过滤扩展方法 Creating Filtering Extension Methods 精通ASP-NET-MVC-5-弗瑞曼 Listing 4-17
  9. C#反射与特性(九):全网最全-解析反射
  10. 解决Android studio遇见Could not find common.jar (android.arch.core:common:1.0.0).错误