98. Validate Binary Search Tree
Problem description:
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.
1 | Example 1: |
1 | Example 2: |
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.
Solution1:
Binary search tree:
left subtree < node < right subtree
this looks like a sorted array, so we can use a stack to keep nodes when we do inorder traversal
.
We can use a variable to store left node and compare with current one.
1 | /** |
time complexity: $O(n)$
space complexity: $O(logn)$
Solution2:
Another solution is to use BFS, with a stack.
Find the left most node, and then start to validate.
1 | class Solution { |
time complexity: $O(n)$
space complexity: $O(n)$