LeetCode Construct Binary Tree from Inorder and Postorder Traversal
2015-07-06 16:00
495 查看
Description:
Given inorder and postorder traversal of a tree, construct the binary tree.
Solution:
和前一道题目类似,不过这里的len表示的是当前根节点的右子树。
中序:(左子树)(根节点)(len长度的右子树)
后序:(左子树)(len长度的右子树)(根节点)
Given inorder and postorder traversal of a tree, construct the binary tree.
Solution:
和前一道题目类似,不过这里的len表示的是当前根节点的右子树。
中序:(左子树)(根节点)(len长度的右子树)
后序:(左子树)(len长度的右子树)(根节点)
import java.util.*; public class Solution { int[] inorder; int[] postorder; int n; public TreeNode buildTree(int[] inorder, int[] postorder) { this.inorder = inorder; this.postorder = postorder; int n = inorder.length; return dfs(0, n - 1, 0, n - 1); } TreeNode dfs(int inStart, int inEnd, int postStart, int postEnd) { if (inStart > inEnd) return null; int inMiddle = inStart; for (int i = inStart; i <= inEnd; i++) { if (inorder[i] == postorder[postEnd]) { inMiddle = i; break; } } int len = inEnd - inMiddle; TreeNode root = new TreeNode(postorder[postEnd]); root.left = dfs(inStart, inMiddle - 1, postStart, postEnd - 1 - len); root.right = dfs(inMiddle + 1, inEnd, postEnd - len, postEnd - 1); return root; } }
相关文章推荐
- java数据结构和算法------希尔排序
- javascript实现可编辑的下拉框
- 关于时间同步
- nginx lua调用redis和mongo
- HDU 1001
- iOS 一个带动画的等待指示器
- pthread
- 文字滚动
- linux下vi操作 提示Found a swap file by the name
- Android 知识点
- 主机网卡发现所发送数据的目的IP和默认网关不在同一网段(网络)时,会丢弃该数据帧吗???
- jQuery入门:用包装集工作(Working with Selections)
- LeetCode151_Reverse Words in a String
- SQL Server死锁产生原因及解决办法 .
- WEB ajax笔记
- 思科PVLAN配置详解
- HTML5 bootstrap2网页兼容(支持IE10以下)
- 线段树详解(单点更新与成段更新\区间更新操作)
- leetcode Count Complete Tree Nodes
- MySQL详解(16)-----------海量数据建议