
									 Problem
								
								
									 Solution
								
								
									 Submissions
								
								
							Validate Binary Search Tree
								Certification: Intermediate Level
								Accuracy: 100%
								Submissions: 1
								Points: 10
							
							Write a Python function to validate if a given binary tree is a valid binary search tree (BST). A valid 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.
Algorithm for is_valid_bst(root)
- Use a recursive approach to validate each node in the tree.
- For each node, track the valid range of values (lower and upper bounds).
- Validate that the current node's value falls within the valid range.
- Update the valid range when traversing to left and right subtrees.
- Return true if all nodes satisfy the BST property, false otherwise.
Example 1
- Input:
 2
 / \
 1 3
- Output: true
- Explanation: 
- The tree has the following structure:
- - Root node with value 2
- - Left child with value 1 (less than 2)
- - Right child with value 3 (greater than 2)
- All BST properties are satisfied.
 
Example 2
- Input:
 5
 / \
 1 4
 / \
 3 6
- Output: false
- Explanation: 
- The tree has the following structure:
- - Root node with value 5
- - Left child with value 1 (less than 5)
- - Right child with value 4 (less than 5, which violates BST property)
- - Left child of 4 is 3 (less than 4)
- - Right child of 4 is 6 (greater than 4)
- The value 4 is not greater than 5, so this is not a valid BST.
 
Constraints
- The number of nodes in the tree is in the range [1, 10^4]
- -2^31 <= Node.val <= 2^31 - 1
- Time Complexity: O(n) where n is the number of nodes
- Space Complexity: O(h) where h is the height of the tree
Editorial
									
												
My Submissions
										All Solutions
									| Lang | Status | Date | Code | 
|---|---|---|---|
| You do not have any submissions for this problem. | |||
| User | Lang | Status | Date | Code | 
|---|---|---|---|---|
| No submissions found. | ||||
Solution Hints
- Consider using an in-order traversal to check if the values are in ascending order
- Alternatively, use a recursive approach with upper and lower bounds for each node
- Remember that each node must be greater than all nodes in its left subtree and less than all nodes in its right subtree
- Track the valid range for each node as you traverse down the tree
- Be careful about handling duplicate values according to the problem's definition
