题目描述:给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D个链表)。返回一个包含所有深度的链表的数组。
方法一
层序遍历法
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode[] listOfDepth(TreeNode tree) {
LinkedList<TreeNode> queue=new LinkedList<>();
queue.add(tree);
List<ListNode> res=new ArrayList<>();
ListNode dummy=new ListNode();
while(!queue.isEmpty())
{
int size=queue.size();
ListNode curr=dummy;
for(int i=0;i<size;i++)
{
TreeNode treeNode=queue.poll();
curr.next=new ListNode(treeNode.val);
if(treeNode.left!=null)
queue.add(treeNode.left);
if(treeNode.right!=null)
queue.add(treeNode.right);
curr=curr.next;
}
res.add(dummy.next);
dummy.next=null;
}
return res.toArray(new ListNode[]{});
}
}