这题让求的就是让把二叉树中每行都串联起来,对于这道题来说最适合的就是BFS。也 就是一行一行的遍历,如下图所示
    image.png

    1. public Node connect(Node root) {
    2. if (root == null) return null;
    3. Queue<Node> queue = new LinkedList();
    4. queue.offer(root);
    5. while (!queue.isEmpty()) {
    6. // 每一层的数量
    7. int size = queue.size();
    8. // 前一个节点
    9. Node pre = null;
    10. for (int i = 0; i < size; i++) {
    11. // 出队
    12. Node node = queue.poll();
    13. // 如果pre为空就表示node节点是这一行的第一个,
    14. // 没有前一个节点指向他,否则就让前一个节点指向他
    15. if (pre != null) pre.next = node;
    16. pre = node;
    17. if (node.left != null) {
    18. queue.offer(node.left);
    19. }
    20. if (node.right != null) {
    21. queue.offer(node.right);
    22. }
    23. }
    24. }
    25. return root;
    26. }