这道题是为数不多的感觉在读本科的时候见过的问题。

人工构造的过程是如何呢。兴许遍历最后一个节点一定是整棵树的根节点。从中序遍历中查找到这个元素,就能够把树分为两颗子树,这个元素左側的递归构造左子树,右側的递归构造右子树。元素本身分配空间,作为根节点。

于set和map容器不同的是。vector容器不含find的成员函数。应该用stl的库函数,好在返回的也是迭代器,而vector的迭代器之间是能够做减法的。偏移量非常方便的得到。

TreeNode *buildRec(vector<int> &inorder, int si, vector<int> &postorder, int so, int len){
if(len <= 0) return NULL;
TreeNode *root = new TreeNode(postorder[so]);
int index = find(inorder.begin(), inorder.end(), postorder[so]) - inorder.begin();
int newlen = index - si;
root->left = buildRec(inorder, si, postorder, so-len+newlen, newlen);
root->right = buildRec(inorder, index+1, postorder, so-1, len-newlen-1);
return root;
} class Solution {
public:
TreeNode *buildTree(vector<int> &inorder, vector<int> &postorder) {
return buildRec(inorder, 0, postorder, inorder.size()-1, inorder.size());
}
};

最新文章

  1. oracle用户创建
  2. Unity游戏开发之“屏幕截图”
  3. C\C++编程中:相对路径+绝对路径
  4. Jquery 之 日常积累(一)
  5. WPF多线程演示
  6. 面试小结(java基础)
  7. SEO学习之路
  8. Maximum Subarray (JAVA)
  9. [Swust OJ 763]--校门外的树 Plus(暴力枚举)
  10. tmux鼠标配置出现错误unknown option: mode-mouse
  11. Rest模式get,put,post,delete含义与区别(转)
  12. CEPH RGW集群和bucket的zone group 不一致导致的404异常解决 及 使用radosgw-admin metadata 命令设置bucket metadata 的方法
  13. leetcode算法:Distribute Candies
  14. js基础进阶--编的实用技巧(一)
  15. maven私库nexus2.11.4迁移升级到nexus3.12.0
  16. 中间件 activeMQ Jms Java Demo
  17. Python的串口通信(pyserial)
  18. mysql开启general_log查看执行sql
  19. ife 零基础学院 day 1 - 我为什么想学前端
  20. for 循环 以及基本的数据类型

热门文章

  1. Apache 编译扩展的方法
  2. T-SQL应用,视图、存储过程、触发器、游标、临时表等
  3. 一周学会Mootools 1.4中文教程:(1)Dom选择器
  4. Streams Studio配置Build options
  5. BUAA 更大公约数
  6. break的使用例一
  7. rsyslog 走tcp通讯配置
  8. php 前端获取数据
  9. HDU 3613 Best Reward(扩展KMP)
  10. 通过配置Tomcat,让Android真机通过局域网访问PC的文件