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