Medium

Len Chen
1 min readSep 30, 2018

Problem

Given a binary tree, determine if it is a valid binary search tree (BST).

Assume a BST is defined as follows:

  • The left subtree of a node contains only nodes with keys less than the node’s key.
  • The right subtree of a node contains only nodes with keys greater than the node’s key.
  • Both the left and right subtrees must also be binary search trees.

Example 1:

Input:
2
/ \
1 3
Output: true

Example 2:

    5
/ \
1 4
/ \
3 6
Output: false
Explanation: The input is: [5,1,4,null,null,3,6]. The root node's value
is 5 but its right child's value is 4.

Solution

Use recursion for examining left subtree and right subtree by giving them allowed boundaries. Once there is a node over the boundaries, it’s not a valid BST.

Complexity

Because we traverse each node in this tree once, it takes O(n) time if n denotes to counts of nodes in this tree.

For space complexity, because there will be at most h calls in calling stack which h denotes to the longest path from root to leaves in this tree. It uses O(h) extra space. Or you can say O(logn) because h is bounded by logn.

--

--

Len Chen
Len Chen

Responses (1)