自己写的代码
/**
* 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) {
ArrayDeque<TreeNode> queue = new ArrayDeque<>();
queue.add(tree);
ArrayList<ArrayList<Integer>> lists = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> list = new ArrayList<>();
list.add(tree.val);
lists.add(list);
//ListNode[] res = new ListNode[depth];
while (queue.size() > 0){
int size = queue.size();
ArrayList<Integer> subList = new ArrayList<>();
for (int i = 0; i < size; i++) {
TreeNode node = queue.poll();
if (node != null){
if (node.left != null){
queue.add(node.left);
subList.add(node.left.val);
}
if (node.right != null){
queue.add(node.right);
subList.add(node.right.val);
}
}
}
if (subList.size() > 0){
lists.add(subList);
}
}
int len = lists.size();
ListNode[] res = new ListNode[len];
for (int i = 0; i < len; i++) {
ArrayList<Integer> sub = lists.get(i);
ListNode root = new ListNode(sub.get(0));
ListNode temp = root;
for (int j = 1; j < sub.size(); j++) {
ListNode node = new ListNode(sub.get(j));
temp.next = node;
temp = temp.next;
}
res[i] = root;
}
return res;
}
}