/**
* 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) {
// 存放结果的 ListNode List
List<ListNode> ans = new ArrayList();
// bfs用队列
LinkedList<TreeNode> queue = new LinkedList();
// 将起始节点放入队列
queue.addLast(tree);
while(!queue.isEmpty()) {
// 当前层需要遍历的节点次数
int size = queue.size();
// 用于遍历链表的头指针
ListNode head = null;
for (int i = 0; i < size; i++) {
TreeNode tmp = queue.pollFirst();
if (tmp.left != null) {
// tmp节点有左子树,则加到队列
queue.addLast(tmp.left);
}
if (tmp.right != null) {
// tmp节点有右子树,则加到队列
queue.addLast(tmp.right);
}
if (i == 0) {
// 说明另起一行(遍历到某层的第一个元素)
head = new ListNode(tmp.val);
ans.add(head);
} else {
head.next = new ListNode(tmp.val);
head = head.next;
}
}
}
return ans.toArray(new ListNode[0]);
}
}