File tree Expand file tree Collapse file tree 1 file changed +56
-0
lines changed
validate-binary-search-tree Expand file tree Collapse file tree 1 file changed +56
-0
lines changed Original file line number Diff line number Diff line change
1
+ class TreeNode {
2
+ val : number ;
3
+ left : TreeNode | null ;
4
+ right : TreeNode | null ;
5
+ constructor ( val ?: number , left ?: TreeNode | null , right ?: TreeNode | null ) {
6
+ this . val = val === undefined ? 0 : val ;
7
+ this . left = left === undefined ? null : left ;
8
+ this . right = right === undefined ? null : right ;
9
+ }
10
+ }
11
+
12
+ // 1번풀이
13
+ function isValidBST1 ( root : TreeNode | null ) : boolean {
14
+ const values : number [ ] = [ ] ;
15
+
16
+ // 중위노드 : 왼쪽 자식 -> 부모 노드 -> 오른쪽 자식
17
+ function inorder ( node : TreeNode | null ) {
18
+ if ( ! node ) return null ;
19
+ const { val, left, right } = node ;
20
+
21
+ inorder ( left ) ;
22
+ values . push ( val ) ;
23
+ inorder ( right ) ;
24
+ }
25
+
26
+ inorder ( root ) ;
27
+
28
+ for ( let i = 1 ; i < values . length ; i ++ ) {
29
+ if ( values [ i ] <= values [ i - 1 ] ) return false ;
30
+ }
31
+
32
+ return true ;
33
+ } ;
34
+
35
+ // 2번풀이 (배열 대신 변수 사용)
36
+ function isValidBST2 ( root : TreeNode | null ) : boolean {
37
+ let prev : number | null = null ;
38
+ let isValid = true ;
39
+
40
+ function inorder ( node : TreeNode | null ) {
41
+ if ( ! node || ! isValid ) return ;
42
+
43
+ inorder ( node . left ) ;
44
+
45
+ if ( prev !== null && node . val <= prev ) {
46
+ isValid = false ;
47
+ return ;
48
+ }
49
+ prev = node . val ;
50
+
51
+ inorder ( node . right ) ;
52
+ }
53
+
54
+ inorder ( root ) ;
55
+ return isValid ;
56
+ } ;
You can’t perform that action at this time.
0 commit comments