给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 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
}