lintcode-medium-Construct Binary Tree from Preorder and Inorder Traversal
2016-03-16 11:57
309 查看
Given preorder and inorder traversal of a tree, construct the binary tree.
Given in-order
Given in-order
[1,2,3]and pre-order
[2,1,3], return a tree:
2 / \ 1 3
/** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public TreeNode(int val) { * this.val = val; * this.left = this.right = null; * } * } */ public class Solution { /** *@param preorder : A list of integers that preorder traversal of a tree *@param inorder : A list of integers that inorder traversal of a tree *@return : Root of a tree */ public TreeNode buildTree(int[] preorder, int[] inorder) { // write your code here if(preorder == null || preorder.length == 0) return null; int size = preorder.length; TreeNode root = build(preorder, 0, size - 1, inorder, 0, size - 1); return root; } public TreeNode build(int[] preorder, int pre_start, int pre_end, int[] inorder, int in_start, int in_end){ if(pre_start > pre_end || in_start > in_end) return null; TreeNode root = new TreeNode(preorder[pre_start]); int k = in_start; for(; k <= in_end; k++){ if(inorder[k] == preorder[pre_start]) break; } TreeNode left = build(preorder, pre_start + 1, pre_start + k - in_start, inorder, in_start, k - 1); TreeNode right = build(preorder, pre_start + k - in_start + 1, pre_end, inorder, k + 1, in_end); root.left = left; root.right = right; return root; } }
相关文章推荐
- Android startActivityForResult与singleTask
- 十六进制转换为浮点数
- sysbench 对 mysql-5.6.28 测试
- [html5]记一些html5的东西
- 信号量与互斥锁
- 设计模式_单例模式
- 如何修改struts上传文件大小
- Unix系统命令
- LINUX基本命令
- 43.Android之ListView中BaseAdapter学习
- Python爬虫爬数据写入到EXCEL中
- SQLiteLog : (1) no such column: playTime
- LeetCode102—Binary Tree Level Order Traversal
- javascript中arguments,callee,caller详解
- [OpenType 1.70 笔记] SVG 表
- Linux实现ssh双因子登陆,with Google Authenticator
- Linux下tomcat使用
- php设计模式
- KNN 算法的python实现 迭代训练方式,将最近的测试样例作为训练样例扩大训练集
- IOS 委托和协议区别和联系