給定一棵二叉樹,設計一個算法,創建含有某一深度上所有節點的鏈表(比如,若一棵樹的深度爲 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
}