刷題--程序員面試金典--面試題 04.03. 特定深度節點鏈表(go)

面試題 04.03. 特定深度節點鏈表

給定一棵二叉樹,設計一個算法,創建含有某一深度上所有節點的鏈表(比如,若一棵樹的深度爲 D,則會創建出 D 個鏈表)。返回一個包含所有深度的鏈表的數組。

 

示例:

輸入:[1,2,3,4,5,null,7,8]

        1
       /  \ 
      2    3
     / \    \ 
    4   5    7
   /
  8

輸出:[[1],[2,3],[4,5,7],[8]]

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/list-of-depth-lcci
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。


思路:

隊列實現層序遍歷+構建鏈表得綜合題。

func listOfDepth(tree *TreeNode) []*ListNode {

    res := make([]*ListNode,0)

    if tree == nil {
        return res
    }

    queue := make([]*TreeNode,0)
    queue = append(queue,tree)

    for len(queue) != 0 {
        length := len(queue)
        head := &ListNode{0,nil}
        p := head

        for length > 0 {
            t := queue[0]
            lnode := &ListNode{t.Val,nil}
            p.Next = lnode
            p = p.Next
            if t.Left != nil {
                queue = append(queue,t.Left)
            }
            if t.Right != nil {
                queue = append(queue,t.Right)
            }
            queue = queue[1:]
            length--
        }
        res = append(res,head.Next)
    }

    return res
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章