Class Solution
java.lang.Object
g0001_0100.s0098_validate_binary_search_tree.Solution
public class Solution
extends java.lang.Object
98 - Validate Binary Search Tree.
Medium
Given the root
of a binary tree, determine if it 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.
Example 1:
Input: root = [2,1,3]
Output: true
Example 2:
Input: root = [5,1,4,null,null,3,6]
Output: false
Explanation: The root node’s value is 5 but its right child’s value is 4.
Constraints:
- The number of nodes in the tree is in the range
[1, 104]
. -231 <= Node.val <= 231 - 1
To solve the “Validate Binary Search Tree” problem in Java with the Solution class, follow these steps:
- Define a method
isValidBST
in theSolution
class that takes the root of a binary tree as input and returns true if the tree is a valid binary search tree (BST), and false otherwise. - Implement a recursive approach to validate if the given binary tree is a valid BST:
- Define a helper method
isValidBSTHelper
that takes the root node, a lower bound, and an upper bound as input parameters. - In the
isValidBSTHelper
method, recursively traverse the binary tree nodes. - At each node, check if its value is within the specified bounds (lower bound and upper bound) for a valid BST.
- If the node’s value violates the BST property, return false.
- Otherwise, recursively validate the left and right subtrees by updating the bounds accordingly.
- If both the left and right subtrees are valid BSTs, return true.
- Define a helper method
- Call the
isValidBSTHelper
method with the root node and appropriate initial bounds to start the validation process.
Here’s the implementation of the isValidBST
method in Java:
class Solution {
public boolean isValidBST(TreeNode root) {
return isValidBSTHelper(root, null, null);
}
private boolean isValidBSTHelper(TreeNode node, Integer lower, Integer upper) {
if (node == null) {
return true;
}
int val = node.val;
if ((lower != null && val <= lower) || (upper != null && val >= upper)) {
return false;
}
return isValidBSTHelper(node.left, lower, val) && isValidBSTHelper(node.right, val, upper);
}
}
This implementation recursively validates whether the given binary tree is a valid BST in O(n) time complexity, where n is the number of nodes in the tree.
-
Constructor Summary
Constructors -
Method Summary
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Constructor Details
-
Solution
public Solution()
-
-
Method Details
-
isValidBST
-