这题让求的就是让把二叉树中每行都串联起来,对于这道题来说最适合的就是BFS。也 就是一行一行的遍历,如下图所示
public Node connect(Node root) {if (root == null) return null;Queue<Node> queue = new LinkedList();queue.offer(root);while (!queue.isEmpty()) {// 每一层的数量int size = queue.size();// 前一个节点Node pre = null;for (int i = 0; i < size; i++) {// 出队Node node = queue.poll();// 如果pre为空就表示node节点是这一行的第一个,// 没有前一个节点指向他,否则就让前一个节点指向他if (pre != null) pre.next = node;pre = node;if (node.left != null) {queue.offer(node.left);}if (node.right != null) {queue.offer(node.right);}}}return root;}
