| 123456789101112131415161718192021222324252627282930313233343536373839404142 | 
							- /**
 
-  * Definition for a binary tree node.
 
-  * type TreeNode struct {
 
-  *     Val int
 
-  *     Left *TreeNode
 
-  *     Right *TreeNode
 
-  * }
 
-  */
 
- func printTree(root *TreeNode) [][]string {
 
- 	if root == nil {
 
- 		return [][]string{}
 
- 	}
 
- 	depth := 0
 
- 	helper(root, 0, &depth)
 
- 	res := make([][]string, depth)
 
- 	for i := range res {
 
- 		res[i] = make([]string, 1<<uint(depth)-1)
 
- 	}
 
- 	printer(root, len(res[0])/2, 0, 1<<uint(depth-2), res)
 
- 	return res
 
- }
 
- func printer(root *TreeNode, x, y, det int, res [][]string) {
 
- 	if root == nil {
 
- 		return
 
- 	}
 
- 	res[y][x] = strconv.Itoa(root.Val)
 
- 	printer(root.Left, x-det, y+1, det>>1, res)
 
- 	printer(root.Right, x+det, y+1, det>>1, res)
 
- }
 
- func helper(root *TreeNode, y int, depth *int) {
 
- 	if root == nil {
 
- 		return
 
- 	}
 
- 	y++
 
- 	if *depth < y {
 
- 		*depth = y
 
- 	}
 
- 	helper(root.Left, y, depth)
 
- 	helper(root.Right, y, depth)
 
- }
 
 
  |