给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表)。返回一个包含所有深度的链表的数组。
示例:
输入:[1,2,3,4,5,null,7,8]
1
/ \
2 3
/ \ \
4 5 7
/
8
输出:[[1],[2,3],[4,5,7],[8]]
代码
class Solution {
public ListNode[] listOfDepth(TreeNode tree) {
Queue<TreeNode> queue=new LinkedList<>();
ArrayList<ListNode> arrayList=new ArrayList<>();
queue.add(tree);
while (!queue.isEmpty())
{
int size=queue.size();
ListNode head=new ListNode(0);
ListNode helper=head;
for(int i=0;i<size;i++)
{
TreeNode temp=queue.poll();
ListNode temp2=new ListNode(temp.val);
helper.next=temp2;
helper=temp2;
if(temp.left!=null) queue.offer(temp.left);
if(temp.right!=null) queue.offer(temp.right);
}
arrayList.add(head.next);
}
ListNode[] listNodes=new ListNode[arrayList.size()];
for(int i=0;i<arrayList.size();i++) listNodes[i]=arrayList.get(i);
return listNodes;
}
}