题目
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
例如: 给定二叉树: [3,9,20,null,null,15,7],
3 / \ 9 20 / \ 15 7
返回其层次遍历的结果:
[[3],[9,20],[15,7]]
提示:节点总数 <= 1000
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof
解题思路
-
定义一个level变量用于指定二叉树层级,level=0,从二叉树顶开始
-
level++
creat(tree,root.Left,level)
creat(tree,root.Right,level)
从上到下,从左到右按层序递归遍历二叉树 -
(*tree)[level]=append((*tree)[level],root.Val)
将遍历得到的数值添加到指定层级的数组中
代码
–执行时间:0 ms --消耗内存:3 MB
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func levelOrder(root *TreeNode) [][]int {
//初始化数组
tree:=make([][]int,0)
creat(&tree,root,0)
return tree
}
func creat(tree *[][]int,root *TreeNode,level int) {
if root==nil{
return
}
if len(*tree)-1<level{
(*tree)=append((*tree),make([]int,0))
}
(*tree)[level]=append((*tree)[level],root.Val)
//level++到下一层,递归遍历
level++
creat(tree,root.Left,level)
creat(tree,root.Right,level)
}