Construct Binary Search Tree from Preorder Traversal

Given an array of integers preorder, which represents the preorder traversal of a BST (i.e., binary search tree), construct the tree and return its root.

It is guaranteed that there is always possible to find a binary search tree with the given requirements for the given test cases.

A binary search tree is a binary tree where for every node, any descendant of Node.left has a value strictly less than Node.val, and any descendant of Node.right has a value strictly greater than Node.val.

A preorder traversal of a binary tree displays the value of the node first, then traverses Node.left, then traverses Node.right.

Example 1
        8
       / \
      5   10
     / \    \
    1   7    12
Inputpreorder = [8,5,1,7,10,12]
Output[8,5,10,1,7,null,12]
The constructed BST has root 8, left subtree rooted at 5 with children 1 and 7, and right subtree rooted at 10 with right child 12.
Example 2
    1
     \
      3
Inputpreorder = [1,3]
Output[1,null,3]
The preorder traversal [1, 3] constructs a BST with root 1 and right child 3.

Constraints

  • 1 <= preorder.length <= 100
  • 1 <= preorder[i] <= 1000
  • All the values of preorder are unique.

Asked at 5 companies

</>

Your Solution

(Ctrl/Cmd + Enter)

Switching Language

Loading template...

Loading...

Sign in to save your progress

AI code evaluation

Get a correctness verdict, missed edge cases, and complexity analysis of your solution.

Sign in to evaluate