题目

Given inorder and postorder traversal of a tree, construct the binary tree.

Note:

You may assume that duplicates do not exist in the tree.

Show Tags

Show Similar Problems

分析

跟上一道题同样的道理。

AC代码

class Solution {
public: template <typename Iter>
TreeNode* make(Iter in_begin, Iter in_end , Iter post_begin, Iter post_end ) { if (post_begin == post_end || in_begin == in_end)
return NULL; int size = post_end - post_begin;
//后序遍历最后一个节点为树的根节点
TreeNode *root = new TreeNode(*(post_begin + size-1)); //在中序遍历结果中查找根节点
Iter iter = find(in_begin, in_end, *(post_begin + size - 1)); //计算左子树个数
int count = iter - in_begin; if (iter != in_end)
{
//则在inOrder中(0 , count-1)为左子树中序遍历结果(count+1,size-1)为右子树的中序遍历序列
//在preOrder中(0,count-1)为左子树前序遍历结果(count,size-2)为右子树前序遍历结果 root->left = make(in_begin, iter , post_begin, post_begin + count); //构造右子树
root->right = make(iter + 1, in_end ,post_begin + count, post_begin + size - 1);
}
return root; } TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {
if (inorder.empty() || postorder.empty())
return NULL; return make(inorder.begin(), inorder.end() ,postorder.begin(), postorder.end());
} };

GitHub测试程序源码

最新文章

  1. 转 jQuery 中bind(),live(),delegate(),on() 区别
  2. entrar en su zapatilla de deporte en este lugar
  3. gulp系列文章一 fis vs grunt vs gulp,为什么要是gulp呢?
  4. mysql启动报错:Starting MySQL...The server quit without updating PID file
  5. Codeforces Round #151 (Div. 2)
  6. LibSVM学习(四)——逐步深入LibSVM 转
  7. JavaScript学习 常用的对话框函数
  8. Teclast/台电 P98HD四核测评9.7寸台电P98HD 评测体验 (转载)
  9. 10s后自动跳转
  10. wamp配置sendmail发送邮件
  11. Java 练习(多态,instanceof)
  12. 玩转SSH(四):Struts + Spring + MyBatis
  13. 如何兼容所有Android版本选择照片或拍照然后裁剪图片--基于FileProvider和动态权限的实现
  14. 用python模拟登录(解析cookie + 解析html + 表单提交 + 验证码识别 + excel读写 + 发送邮件)
  15. PAT1029:Median
  16. ButterKnife 牛油刀使用
  17. 【Topcoder 1879】Scheduling
  18. Vfox数据库导出EXCEL,含有备注型子段
  19. vim中文乱码问题
  20. selenium之批量执行测试用例

热门文章

  1. C# 面向对象之继承后初始化顺序
  2. pwnhub 相对路径覆盖
  3. [HDU1595] find the longest of the shortest
  4. Java EE学习笔记(七)
  5. 牛客网Java刷题知识点之什么是JSP的3大常用指令、JSP的6大哪些动作、JSP中include指令和include动作有什么区别
  6. 05.Javascript——入门函数
  7. 说说JVM原理?内存泄漏与溢出的区别?何时产生内存泄漏?
  8. uvm_reg_item——寄存器模型(五)
  9. 使用python模拟登陆百度
  10. UVA116 Unidirectional TSP 单向TSP