方法1:BFS层序遍历
public List<ListNode> binaryTreeToLists(TreeNode root) {
List<ListNode> res = new ArrayList<>();
if (root == null) return res;
Queue<TreeNode> q = new LinkedList<>();
q.offer(root);
while (!q.isEmpty()) {
ListNode head = null;
ListNode cur = null;
int size = q.size();
for (int i = 0; i < size; i++) {
TreeNode node = q.poll();
if (i == 0) {
head = new ListNode(node.val);
cur = head;
} else {
cur.next = new ListNode(node.val);
cur = cur.next;
}
if (node.left != null) q.offer(node.left);
if (node.right != null) q.offer(node.right);
}
res.add(head);
}
return res;
}