2
public List<List<String>> printTree(TreeNode root) {3
List<List<String>> res = new ArrayList();5
int height = getHeight(root);7
int column = (int) Math.pow(2, height + 1) - 1;9
for (int k = 0; k < row; k++) {10
List<String> list = new ArrayList();11
for (int i = 0; i < column; i++) {18
int right = column - 1;20
print(res, left, right, level, root);25
public void print(List<List<String>> res, int left, int right, int level, TreeNode root) {26
if (root == null) return;27
int mid = left + (right - left) / 2;28
res.get(level).set(mid, String.valueOf(root.val));30
print(res, left, mid - 1, level + 1, root.left);31
print(res, mid + 1, right, level + 1, root.right);34
public int getHeight(TreeNode root) {35
if (root == null) return -1;36
int left = getHeight(root.left);37
int right = getHeight(root.right);39
return Math.max(left, right) + 1;