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

发布时间 2023-08-27 21:17:08作者: 小星code

题目链接: 剑指Offer 32 - II. 从上到下打印二叉树 II

题目描述:
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
解法思路:
本题与上题的唯一区别就是在输出的时候,要将同一层的数输出在一行,这就意味着你需要知道哪些数是在一行的;
这里巧妙的利用求队列的长度,并依次输出每一行,

代码:

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func levelOrder(root *TreeNode) [][]int {
    var res [][]int
    if root == nil {
        return nil
    }
    var q []*TreeNode
    q = append(q,root)
    for len(q) > 0 {
        n := len(q) //当前层的节点数
        var path []int
    for i:=0;i<n;i++{
        node := q[0]
        q = q[1:]
        path = append(path,node.Val)
        if node.Left != nil {
            q = append(q,node.Left)
        }
        if node.Right != nil {
            q = append(q,node.Right) 
        }
    }
    tmp := make([]int,len(path))
    copy(tmp,path)
    res = append(res,tmp)
    
    }
    return res
}