Check if a binary tree is a valid BST (with recursion) bool IsValidBST(TreeNode root) { return Validate(root, null, null); } Follow on: bool Validate(TreeNode node, int?
min, int? max) {
if (node == null) return true;
if ((min != null && node.val <= min) || (max != null && node.val
>= max)) return false;
return Validate(node.left, min, node.val) &&
Validate(node.right, node.val, max);
Explanation:
Pass down min and max bounds for subtree values; node must be in (min, max) range.