https://leetcode-cn.com/problems/list-of-depth-lcci/
[time] 25min
[brainstorm]
1 node in linked list is in same level, consider bfs.
2 treenode is in tree structure as input, listnode is in list structure as output
so need to transform treenode to listnode
3 link listnode into list
4 use pre listnode to generalize first node handling in each level.
[code]
/**
* 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) {
Deque<TreeNode> dq = new ArrayDeque<>();
List<ListNode> list = new ArrayList<>();
ListNode[] ret;
dq.addLast(tree);
while(!dq.isEmpty()){
int len = dq.size();
ListNode pre = new ListNode(-1);
ListNode cur = pre;
for(int i=0;i<len;i++){
TreeNode tnode = dq.removeFirst();
ListNode lnode = new ListNode(tnode.val);
cur.next = lnode;
cur = cur.next;
if(tnode.left!=null){
dq.addLast(tnode.left);
}
if(tnode.right!=null){
dq.addLast(tnode.right);
}
}
list.add(pre.next);
}
int n = list.size();
ret = new ListNode[n];
for(int i=0;i<n;i++){
ret[i] = list.get(i);
}
return ret;
}
}