与116的区别是,一个是完全二叉树,一个是普通二叉树。
public Node connect(Node root) {
Queue<Node> queue = new LinkedList<>();
if (root != null) queue.add(root);
while (!queue.isEmpty()) {
int size = queue.size();
Node preNode = null; // 取出本层第一个节点
Node node=null;
for (int i = 0; i < size; i++) {
if (i == 0) {
preNode = queue.poll();
node = preNode;
} else {
node = queue.poll();
preNode.next = node; // 本层前一个节点 next 指向当前节点
preNode = preNode.next;
}
if (node.left != null) queue.add(node.left);
if (node.right != null) queue.add(node.right);
}
preNode.next = null; // 本层最后一个节点 next 指向 null
}
return root;
}