LeetCode #98 Validate Binary Search Tree
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
.