Skip to content

Commit 53f0a11

Browse files
committed
validate binary search tree
1 parent 64ebc44 commit 53f0a11

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Definition for a binary tree node.
2+
from collections import deque
3+
class TreeNode:
4+
def __init__(self, val=0, left=None, right=None):
5+
self.val = val
6+
self.left = left
7+
self.right = right
8+
9+
def list_to_tree(arr):
10+
if not arr:
11+
return None
12+
# -> 레벨로 주고 있음
13+
root = TreeNode(arr[0])
14+
queue = deque([root]) # 큐에 root를 넣고 시작 queue = deque() queue.append(root)와 동일
15+
i = 1
16+
17+
while queue and i < len(arr):
18+
current = queue.popleft()
19+
20+
if i < len(arr) and arr[i] is not None:
21+
current.left = TreeNode(arr[i])
22+
queue.append(current.left)
23+
i += 1
24+
25+
if i < len(arr) and arr[i] is not None:
26+
current.right = TreeNode(arr[i])
27+
queue.append(current.right)
28+
i += 1
29+
30+
return root
31+
32+
33+
class Solution:
34+
def isValidBST(self, root: Optional[TreeNode]) -> bool:
35+
self.prev = None
36+
def inorder(node):
37+
if not node:
38+
return True
39+
40+
# 왼쪽 서브트리 확인
41+
if not inorder(node.left):
42+
return False
43+
44+
# 현재 노드 값 확인
45+
if self.prev is not None and node.val <= self.prev:
46+
return False
47+
self.prev = node.val
48+
49+
return inorder(node.right)
50+
51+
return inorder(root)

0 commit comments

Comments
 (0)