题目:
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
解法:
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
var arr [][]int
func levelOrder(root *TreeNode) [][]int {
arr = make([][]int, 0) // 因为leetcode在多次测试 用例时,会公用arr变量,所以每次执行前要重置重新复制。注意不能重新创建变量:arr := make([][]int, 0),这样创建的arr已经是一个局部变量arr,不再是全局变量arr,会导致输出为[]
print(root, 1)
return arr
}
func print(node *TreeNode, level int) {
if node == nil {
return
}
if level > len(arr) {
arr = append(arr, make([]int, 0))
}
arr[level - 1] = append(arr[level - 1], node.Val)
print(node.Left, level + 1)
print(node.Right, level + 1)
}