感觉与【leetcode】116. Populating Next Right Pointers in Each Node完全一样,直接copy的代码。
discuss:
class Solution {
public:
Node* connect(Node* root) {
Node *head = nullptr;
Node *prev = nullptr;
Node *cur = root;
while (cur != nullptr){
while (cur != nullptr){ // 遍历cur所在层,cur这一层已经连接好了,现在需要操控其子节点进行连接
if (cur->left != nullptr){ // 左子树
if (prev != nullptr){
prev->next = cur->left;
}else {
head = cur->left; // 下一层第一个node
}
prev = cur->left;
}
if (cur->right != nullptr){ // 右子树
if (prev != nullptr){
prev->next = cur->right;
}else{
head = cur->right; // 下一层第一个node
}
prev = cur->right;
}
cur = cur->next; // 此层下一个node
}
cur = head;
head = nullptr;
prev = nullptr;
}
return root;
}
};