leetcode102.二叉树的层序遍历

func levelOrder(root *TreeNode) [][]int {
    if root==nil{
        return [][]int{}
    }
    nodes:=make([]*TreeNode,0) //用于存储每一层的node,遍历后清空并存储下一层的node
    nodes=append(nodes,root)
    res:=make([][]int,0)
    
    for len(nodes)>0{
        currentNodeList:=nodes[:]
        nodes=make([]*TreeNode,0)
        levelVal:=make([]int,0) //用于存储遍历出的层级节点val
        for _,v:=range currentNodeList{
            levelVal=append(levelVal,v.Val)
            
            if v.Left!=nil{
                nodes=append(nodes,v.Left)
            }
            
            if v.Right!=nil{
                nodes=append(nodes,v.Right)
            }
        }
        
        res=append(res,levelVal)
        
    }
    
    return res
}

Last updated