/** * 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]); }}