Given the root of a binary tree, determine if it is a valid binary search tree (BST).
A valid BST is defined as follows:
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:
[1, 104].-231 <= Node.val <= 231 - 1노드의 왼쪽 자식은 노드의 값보다 작아야하고, 노드의 오른쪽 자식은 노드의 값보다 커야합니다.
모든 노드를 확인해야 하는 완전 탐색의 문제이고, DFS 알고리즘을 이용하여 풀이하였습니다.
def dfs(node, left, right):
if not node: return True
if not (node.val < right and node.val > left):
return False
return (dfs(node.left, left, node.val) and dfs(node.right, node.val, right))
return(dfs(root, float("-inf"), float("inf")))
class Solution:
def isValidBST(self, root: Optional[TreeNode]) -> bool:
def dfs(node, left, right):
if not node:
return True
if not (node.val < right and node.val > left):
return False
return (dfs(node.left, left, node.val) and dfs(node.right, node.val, right))
return(dfs(root, float("-inf"), float("inf")))