File tree Expand file tree Collapse file tree 1 file changed +51
-0
lines changed
validate-binary-search-tree Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Original file line number Diff line number Diff line change
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 )
You can’t perform that action at this time.
0 commit comments