zl程序教程

您现在的位置是:首页 >  其他

当前栏目

每日一题---剑指 Offer 32 - II. 从上到下打印二叉树 II[力扣][Go]

2023-03-14 22:58:23 时间

题目描述

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

解题代码

// 逐层打印
func levelOrder(root *TreeNode) [][]int {
    var sum [][]int
    queue := list.New()
    if root != nil {
        // 将根节点入队
        queue.PushBack(root)
    }
    for queue.Len() != 0  {
        var tem []int
        size := queue.Len()
        // 每层需要出站的个数
        for  ; size >0 ; size-- {
            // 获取头结点
            e := queue.Front()
            tre := e.Value.(*TreeNode)
            tem = append(tem, tre.Val)
            // 移除头结点
            queue.Remove(e)
            // 将节点的左右节点入队
            if tre.Left != nil {
                queue.PushBack(tre.Left)
            }
            if tre.Right != nil {
                queue.PushBack(tre.Right)
            }
        }
        sum = append(sum, tem)
    }
    return sum
}

提交结果

image