码迷,mamicode.com
首页 > 其他好文 > 详细

Construct BST from preorder list

时间:2018-08-09 19:24:51      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:ida   max   integer   interview   node   from   int   for   返回   

Construct BST from preorder list

https://www.geeksforgeeks.org/construct-bst-from-given-preorder-traversa/



https://github.com/tongzhang1994/Facebook-Interview-Coding/blob/master/Construct%20BST%20from%20preorder%20list.java


10, 5, 1, 7, 40, 50
0.  1.  2.3  4.   5. 



这个题就是用 区间来判断 当前这个值 是不是在这个范围之内的, 如果是那就新开一个node, 
give it a value nums[index]. 如果不是的话, 直接返回null。 不要忘了index++, 为了下次的值

总之, 这个recursion,很像 validate bst 那个做法


 the given traversal is {10, 5, 1, 7, 40, 50}, 
then the output should be root of following tree.
//      10(0)
//    /       //   5 (1)    40(4)
//  /      \     // 1 (2)   7(3)   50(5)

10 的区间是 (min, max)
  
5 的区间是(min, 10)
40 的区间是 (10, max) 
  
括号里的树是 index


public int index = 0;
private TreeNode constructBST(int[] nums){
  return preorder(nums, Integer.MIN_VALUE, Integer.MAX_VALUE);
}

private TreeNode preorder(int[] nums, int min, int max){
  if(index > nums.length) return null;
  if(nums[index] <= min || nums[index] >= max){
    return null;
  }
  
  TreeNode root = new TreeNode(nums[index++]);
  root.left = preorder(nums, min, root.val);
  root.right = preorder(nums, root.val, max);
  return root;
}

 

Construct BST from preorder list

标签:ida   max   integer   interview   node   from   int   for   返回   

原文地址:https://www.cnblogs.com/tobeabetterpig/p/9450926.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!