| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | package main// TreeNode ...// type TreeNode struct {// 	Val   int// 	Left  *TreeNode// 	Right *TreeNode// }func reverseArr(arr *[][]int) {	for i, j := 0, len(*arr)-1; i < j; i, j = i+1, j-1 {		(*arr)[i], (*arr)[j] = (*arr)[j], (*arr)[i]	}}func levelOrderBottomIter(curr *TreeNode, depth int, arr *[][]int) {	if curr == nil {		return	}	if curr.Left != nil {		levelOrderBottomIter(curr.Left, depth+1, arr)	}	if curr.Right != nil {		levelOrderBottomIter(curr.Right, depth+1, arr)	}	for len(*arr) < depth+1 {		layer := make([]int, 0)		*arr = append(*arr, layer)	}	(*arr)[depth] = append((*arr)[depth], curr.Val)}/** * Definition for a binary tree node. * type TreeNode struct { *     Val int *     Left *TreeNode *     Right *TreeNode * } */func levelOrderBottom(root *TreeNode) [][]int {	arr := make([][]int, 0)	levelOrderBottomIter(root, 0, &arr)	reverseArr(&arr)	return arr}// func main() {// 	/**// 	 * t1:  5// 	 *     / \// 	 *    1   4// 	 *       / \// 	 *      2   3// 	 */// 	t1l := TreeNode{1, nil, nil}// 	t1rl := TreeNode{2, nil, nil}// 	t1rr := TreeNode{3, nil, nil}// 	t1r := TreeNode{4, &t1rl, &t1rr}// 	t1 := &TreeNode{5, &t1l, &t1r}// 	t2 := &TreeNode{9, nil, nil}// 	fmt.Println(levelOrderBottom(t1))// 	fmt.Println(levelOrderBottom(t2))// }
 |