#填充每个节点指向最右节点的next指针#基于vector
填充每个节点指向最右节点的next指针
https://www.nowcoder.com/practice/fdbd05d647084fcf9be78444e231998b
/**
* Definition for binary tree with next pointer.
* struct TreeLinkNode {
* int val;
* TreeLinkNode *left, *right, *next;
* TreeLinkNode(int x) : val(x), left(NULL), right(NULL), next(NULL) {}
* };
*/
class Solution {
public:
void connect(TreeLinkNode* root) {
if (root == nullptr) return;
vector<TreeLinkNode*> arr;
arr.insert(arr.begin(), root);
while (!arr.empty()) {
int n = arr.size();
for (int i = 0; i < n - 1; i++) {
arr[i]->next = arr[i + 1];
}
arr[n - 1]->next = nullptr;
for (int i = 0; i < n; i++) {
TreeLinkNode* node = *arr.begin();
arr.erase(arr.begin());
if (node->left) arr.push_back(node->left);
if (node->right) arr.push_back(node->right);
}
}
}
};
查看20道真题和解析