1
+ // Runtime: 1 ms (Top 100.00%) | Memory: 43.8 MB (Top 78.96%)
1
2
class Solution {
2
3
public List <List <String >> printTree (TreeNode root ) {
3
4
List <List <String >> res = new ArrayList ();
4
-
5
+
5
6
int height = getHeight (root );
6
7
int row = height + 1 ;
7
8
int column = (int ) Math .pow (2 , height +1 ) - 1 ;
8
-
9
+
9
10
for (int k =0 ; k <row ; k ++){
10
11
List <String > list = new ArrayList ();
11
12
for (int i =0 ; i <column ; i ++){
12
13
list .add ("" );
13
14
}
14
15
res .add (list );
15
16
}
16
-
17
+
17
18
int left = 0 ;
18
19
int right = column -1 ;
19
20
int level =0 ;
20
21
print (res , left , right , level , root );
21
-
22
+
22
23
return res ;
23
24
}
24
25
public void print (List <List <String >> res , int left , int right , int level , TreeNode root ){
25
26
if (root == null ) return ;
26
27
int mid = left +(right -left )/2 ;
27
28
res .get (level ).set (mid , String .valueOf (root .val ));
28
-
29
+
29
30
print (res , left , mid -1 , level +1 , root .left );
30
31
print (res , mid +1 , right , level +1 , root .right );
31
32
}
32
33
public int getHeight (TreeNode root ){
33
34
if (root ==null ) return -1 ;
34
35
int left = getHeight (root .left );
35
36
int right = getHeight (root .right );
36
-
37
+
37
38
return Math .max (left , right )+1 ;
38
39
}
39
- }
40
+ }
0 commit comments