解题思路
逐层遍历,当前节点cur
分情况
cur
的左子节点的next
为cur
的右子节点cur
的next
不为null
时,cur
的右子节点的next
为cur.next
的左子节点
代码
class Solution {
public Node connect(Node root) {
if (root == null) {
return null;
}
Node mostLeft = root; // 记录每一层的最左节点
while (mostLeft.left != null) {
Node cur = mostLeft;
while (cur != null) {
cur.left.next = cur.right;
if (cur.next != null) {
// 当前节点的右子节点的next为当前节点的next的左子节点
cur.right.next = cur.next.left;
}
cur = cur.next;
}
mostLeft = mostLeft.left; // 往下一层迭代
}
return root;
}
}