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

根据一棵树的中序遍历与后序遍历构造二叉树。

注意:

你可以假设树中没有重复的元素。

例如,给出

中序遍历 inorder = [9,3,15,20,7]

后序遍历 postorder = [9,15,7,20,3]

返回如下的二叉树:

    3
/ \
9 20
/ \
15 7

class Solution {
public TreeNode buildTree(int[] inorder, int[] postorder) {
return helper(inorder, postorder, postorder.length - 1, 0, inorder.length - 1);
} public TreeNode helper(int[] inorder, int[] postorder, int postEnd, int inStart, int inEnd) {
if (inStart > inEnd) {
return null;
} int currentVal = postorder[postEnd];
TreeNode current = new TreeNode(currentVal); int inIndex = 0;
for (int i = inStart; i <= inEnd; i++) {
if (inorder[i] == currentVal) {
inIndex = i;
}
}
TreeNode left = helper(inorder, postorder, postEnd - (inEnd- inIndex) - 1, inStart, inIndex - 1);
TreeNode right = helper(inorder, postorder, postEnd - 1, inIndex + 1, inEnd);
current.left = left;
current.right = right;
return current;
}
}

最新文章

  1. 转 String,StringBuffer与StringBuilder的区别??
  2. Alpha版本发布说明
  3. SharePoint 沙盒解决方案 VS 场解决方案
  4. Cocos2d-x 关于在iOS平台真机测试的一些注意
  5. Spring.net架构示例(含Aop和Ioc)源码
  6. javaweb笔记2之HTTP协议
  7. Cyclomatic complexity
  8. svn“Previous operation has not finished; run &#39;cleanup&#39; if it was interrupted
  9. Linux 进程,线程 -- (未完)
  10. XE10 clientDataset 访问 DataSnap 服务端报错问题,锲而不舍找方法,终于解决了
  11. Android开发常用的插件及工具
  12. memcached加固
  13. ABP 依赖注入
  14. webAPI 控制器(Controller)太多怎么办?
  15. 1286 unknown storage engine innodb
  16. MySql cmd下的学习笔记 —— 有关select的操作(in, and, where, like等等)
  17. 路由器DHCP服务及DHCP中继
  18. spring-boot 速成(5) profile区分环境
  19. cas Cas20ProxyReceivingTicketValidationFilter
  20. [UOJ422]小Z的礼物

热门文章

  1. RESTful设计中的常见疑问
  2. 省市县三级联动sql文件
  3. 八个开源的 Spring Boot 前后端分离项目,一定要收藏!
  4. 【雕爷学编程】Arduino动手做(50)---W25Q64存储模块
  5. 解决el-tree横向滚动条问题
  6. java第十二周课后作业0523
  7. Spring全家桶——SpringBoot渐入佳境
  8. Android设置按钮透明
  9. Vue全局组件创建三种方法
  10. golang如何优雅的编写事务代码