1
+ // Runtime: 110 ms (Top 40.72%) | Memory: 44.9 MB (Top 15.23%)
1
2
/**
2
3
* Definition for a binary tree node.
3
4
* function TreeNode(val, left, right) {
4
- * this.val = (val===undefined ? 0 : val)
5
- * this.left = (left===undefined ? null : left)
6
- * this.right = (right===undefined ? null : right)
5
+ * this.val = (val===undefined ? 0 : val)
6
+ * this.left = (left===undefined ? null : left)
7
+ * this.right = (right===undefined ? null : right)
7
8
* }
8
9
*/
9
10
/**
@@ -15,13 +16,13 @@ var verticalTraversal = function(root) {
15
16
let l = 0 , ri = 0 , mi = 0 ;
16
17
const preOrder = ( r = root , mid = 0 , d = 0 ) => {
17
18
if ( ! r ) return ;
18
-
19
+
19
20
if ( mid == 0 ) {
20
21
if ( ans . length < mi + 1 ) ans . push ( [ ] ) ;
21
22
ans [ mi ] . push ( { v : r . val , d} ) ;
22
23
} else if ( mid < 0 ) {
23
24
if ( mid < l ) {
24
- l = mid ;
25
+ l = mid ;
25
26
mi ++ ;
26
27
ans . unshift ( [ { v : r . val , d} ] ) ;
27
28
} else {
@@ -30,14 +31,14 @@ var verticalTraversal = function(root) {
30
31
}
31
32
} else {
32
33
if ( mid > ri ) {
33
- ri = mid ;
34
+ ri = mid ;
34
35
ans . push ( [ { v : r . val , d} ] ) ;
35
36
} else {
36
37
let idx = mi + mid ;
37
38
ans [ idx ] . push ( { v : r . val , d} ) ;
38
39
}
39
40
}
40
-
41
+
41
42
preOrder ( r . left , mid - 1 , d + 1 ) ;
42
43
preOrder ( r . right , mid + 1 , d + 1 ) ;
43
44
}
@@ -48,4 +49,4 @@ var verticalTraversal = function(root) {
48
49
}
49
50
ans = ans . map ( col => col . sort ( sortByDepthOrVal ) . map ( a => a . v ) ) ;
50
51
return ans ;
51
- } ;
52
+ } ;
0 commit comments