剑指 Offer 32 - II. 从上到下打印二叉树 II

90 阅读1分钟

题目:
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。

解法:

/**
 * 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)
}