Validate Binary Search Tree - LeetCode
주어진 트리가 올바른 이진 탐색 트리인지 확인해보자.
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
import sys
class Solution:
def isValidBST(self, root: Optional[TreeNode]) -> bool:
def func(root,minV,maxV):
if root is None:
return True
return (minV<root.val<maxV and func(root.left,minV,root.val) and func(root.right,root.val,maxV))
return func(root,(-1)*sys.maxsize,sys.maxsize)
minV, maxV를 업데이트해가면서 재귀 호출을 통해 확인하면 된다.
모든 노드를 탐색하기 때문에 O(n)이다.