LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal
来源:互联网 发布:指尖陀螺 知乎 编辑:程序博客网 时间:2024/06/16 16:03
Given preorder and inorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
解题思路:根据先序遍历和中序遍历的特点,先序遍历数组中的第一个数一定是树根的值,找到这个值在中序遍历中的位置,该值将把中序遍历数组分成左子树和右子树,分别计算左右子树的节点个数,然后再在先序遍历数组中分别找到左右子树的根节点,递归构成树结构。
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public TreeNode buildTree(int[] preorder, int[] inorder) { TreeNode root =null; if(preorder.length ==inorder.length){ if(preorder.length ==0 ){ return null; } //要根据先序遍历中的根节点找到中序遍历中的左右孩子节点,第二个参数表示根节点在先序数组中的下标,最后两个参数是将中序数组中分得的左孩子节点区间或右孩子节点区间 return root=helper(preorder,0,inorder,0,inorder.length); } return root; } public TreeNode helper(int [] preorder,int index, int[] inorder, int start,int end){ if(start==end-1){ TreeNode root=new TreeNode(preorder[index]); return root; }else if(start>=end || index >=preorder.length || index<0){ return null; }else{ TreeNode root=new TreeNode(preorder[index]); int median=0; for(int i=start;i<end;i++){ if(inorder[i]==preorder[index]){ median=i; break; } } root.left=helper(preorder,index+1,inorder,start,median); root.right=helper(preorder,index+median-start+1,inorder,median+1,end); return root; } } }
阅读全文
0 0
- LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal
- [Leetcode] 105. Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode --- 105. Construct Binary Tree from Preorder and Inorder Traversal
- [LeetCode]*105.Construct Binary Tree from Preorder and Inorder Traversal
- [leetcode] 105.Construct Binary Tree from Preorder and Inorder Traversal
- Leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal
- 105. Construct Binary Tree from Preorder and Inorder Traversal LeetCode
- LeetCode#105. Construct Binary Tree from Preorder and Inorder Traversal
- Leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode *** 105. Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal
- 【leetcode】105. Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode-105.Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode - 105. Construct Binary Tree from Preorder and Inorder Traversal
- [Leetcode]105. Construct Binary Tree from Preorder and Inorder Traversal
- [LeetCode] 105. Construct Binary Tree from Preorder and Inorder Traversal
- [leetcode] 105. Construct Binary Tree from Preorder and Inorder Traversal
- [leetcode]105. Construct Binary Tree from Preorder and Inorder Traversal
- angular.foreach 循环方法使用指南
- c++第六次作业
- 浅谈Struts2的执行流程
- 413. Arithmetic Slices
- [leetcode] 583. Delete Operation for Two Strings
- LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal
- hdu 2829 斜率优化DP
- selenium2在启动火狐浏览器时一直打不开网页提示火狐连接被重置怎么办或者一直在转加载不了网页
- JavaScript 函数以及闭包
- 玩转AppBarLayout
- 2017.05.19:MySQL问题
- Kotlin入门(一)——基本配置、package与import
- 教你如何用SQL备份和还原数据库
- Gym