Construct BST from preorder list

Posted tobeabetterpig

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Construct BST from preorder list相关的知识,希望对你有一定的参考价值。

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的主要内容,如果未能解决你的问题,请参考以下文章

construct-binary-tree-from-preorder-and-inorder-traversal——前序和中序求二叉树

Construct BST from preorder list

construct bst from preorder

Construct Binary Tree from Preorder and Inorder Traversal

105. Construct Binary Tree from Preorder and Inorder Traversal

Construct Binary Tree