给定一个二叉树,返回该二叉树由底层到顶层的层序遍历,(从左向右,从叶子节点到根节点,一层一层的遍历)
例如:
给定的二叉树是{3,9,20,#,#,15,7},
3 / \ 9 20 / \ 15 7
该二叉树由底层到顶层层序遍历的结果是
[[15,7],[9,20],[3]]
思路:正向遍历然后加了个一个逆转的结果。
package main
import . "nc_tools"
/*
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
/**
*
* @param root TreeNode类
* @return int整型二维数组
*/
func levelOrderBottom( root *TreeNode ) [][]int {
// write code here
if root == nil {
return nil
}
var ret [][]int
var treeList []*TreeNode
treeList = append(treeList, root)
for len(treeList) > 0 {
//取出一层的数量
var levelList []int
num := len(treeList)
for num > 0 {
node := treeList[0]
levelList = append(levelList, node.Val)
if node.Left != nil {
treeList = append(treeList, node.Left)
}
if node.Right != nil {
treeList = append(treeList, node.Right)
}
treeList = treeList[1:]
num --
}
ret = append(ret, levelList)
}
var ret1 [][]int
num := len(ret)
for i := num - 1; i >= 0; i -- {
ret1 = append(ret1, ret[i])
}
return ret1
}
这篇博客介绍了如何实现从底层到顶层的二叉树层序遍历。给定一个二叉树,算法首先从叶子节点开始,然后逐层向上遍历,最后得到的结果是倒序的层次节点值。示例中展示了对于一个特定二叉树的遍历过程,并提供了相应的Go语言实现代码。
909

被折叠的 条评论
为什么被折叠?



