美文网首页
02. 二叉树的层次遍历

02. 二叉树的层次遍历

作者: scriptllh | 来源:发表于2019-02-22 16:44 被阅读0次
    给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。

    例如:
    给定二叉树: [3,9,20,null,null,15,7]

    image.png

    返回其层次遍历结果:

    [
    [3],
    [9,20],
    [15,7]
    ]

    /**
     * Definition for a binary tree node.
     * type TreeNode struct {
     *     Val int
     *     Left *TreeNode
     *     Right *TreeNode
     * }
     */
    
    //bfs
    func levelOrder(root *TreeNode) [][]int {
        if root == nil {
            return [][]int{}
        }
        res := [][]int{}
        queue := []*TreeNode{root}
        for len(queue) > 0 {
            levelSize := len(queue)
            currentLevel := []int{}
            for i := 0; i < levelSize; i++ {
                node := queue[0]
                queue = queue[1:]
                currentLevel = append(currentLevel, node.Val)
                if node.Left != nil {
                    queue = append(queue, node.Left)
                }
                if node.Right != nil {
                    queue = append(queue, node.Right)
                }
            }
            res = append(res, currentLevel)
        }
        return res
    }
    

    相关文章

      网友评论

          本文标题:02. 二叉树的层次遍历

          本文链接:https://www.haomeiwen.com/subject/laieyqtx.html