@@ -11,7 +11,7 @@ class TreeNode {
11
11
* @return {boolean }
12
12
*/
13
13
var isValidBST = function ( root ) {
14
- let leftAncestors = [ ] , rightAncestors = [ ] ;
14
+ let leftAncestors = [ root . val ] , rightAncestors = [ root . val ] ;
15
15
16
16
const exploreLeft = ( node , list ) => {
17
17
console . log ( `exploreLeft` )
@@ -34,25 +34,32 @@ var isValidBST = function (root) {
34
34
return true || exploreLeft ( node , list ) ;
35
35
}
36
36
37
- let queue = [ root ] ;
37
+ const explore = ( queue , list ) => {
38
+ while ( queue . length > 0 ) {
39
+ let curr = queue . shift ( ) , left = curr . left , right = curr . right ;
38
40
39
- while ( queue . length > 0 ) {
40
- let curr = queue . shift ( ) , left = curr . left , right = curr . right ;
41
+ if ( ( left ?. val ?? - Infinity ) >= curr . val || ( right ?. val ?? Infinity ) <= curr . val ) return false ;
41
42
42
- if ( ( left ?. val ?? - Infinity ) >= curr . val || ( right ?. val ?? Infinity ) <= curr . val ) return false ;
43
-
44
- if ( null !== left ) {
45
- queue . push ( left ) ;
46
- if ( ! exploreLeft ( left , leftAncestors ) ) return false ;
47
- }
43
+ if ( null !== left ) {
44
+ queue . push ( left ) ;
45
+ if ( ! exploreLeft ( left , list ) ) return false ;
46
+ }
48
47
49
48
50
- if ( null !== right ) {
51
- queue . push ( right ) ;
52
- if ( ! exploreRight ( right , rightAncestors ) ) return false ;
49
+ if ( null !== right ) {
50
+ queue . push ( right ) ;
51
+ if ( ! exploreRight ( right , list ) ) return false ;
52
+ }
53
53
}
54
54
}
55
55
56
+ if ( root . left !== null ) {
57
+ explore ( [ root . left ] , leftAncestors ) ;
58
+ }
59
+ if ( root . right !== null ) {
60
+ explore ( [ root . right ] , rightAncestors ) ;
61
+ }
62
+
56
63
return true ;
57
64
} ;
58
65
0 commit comments