给定一棵二叉树,返回齐自底向上的层序遍历。
数据范围:二叉树上节点数满足
,二叉树上的值满足 
样例图:
package main import _"fmt" import . "nc_tools" /* * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return int整型二维数组 */ func levelOrderBottom( root *TreeNode ) [][]int { ans:=[][]int{[]int{root.Val}} q:=[]*TreeNode{root} for len(q)>0{ new_q:=[]*TreeNode{} vals:=[]int{} for _,qi:=range q{ if qi.Left!=nil{ new_q=append(new_q,qi.Left) vals=append(vals,qi.Left.Val) } if qi.Right!=nil{ new_q=append(new_q,qi.Right) vals=append(vals,qi.Right.Val) } } if len(vals)>0{ ans=append([][]int{vals},ans...) } q=new_q } return ans }
func levelOrderBottom( root *TreeNode ) (result [][]int) { var dfs func(*TreeNode, int) dfs = func(node *TreeNode, level int) { if node == nil {return} if len(result) == level { result = append(result, []int{}) } result[level] = append(result[level], node.Val) dfs(node.Left, level+1) dfs(node.Right, level+1) } dfs(root, 0) //翻转数组 for l, r := 0, len(result)-1; l < r; { result[l], result[r] = result[r], result[l] l++; r-- } return }