题意:在树的同级结点之间建立向右的指针。
思路:和之字形遍历很像,使用BFS。
/**
* 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 == NULL) return;
vector<TreeLinkNode*> re;
re.push_back(root);
bfs(re);
return;
}
void bfs(vector<TreeLinkNode*> root) {
if(root.size() == 0) return;
for(int i = 0; i < root.size() - 1; ++ i) {
if(root[i] == NULL) continue;
root[i]->next = root[i + 1];
}
if(root[root.size() - 1] != NULL)
root[root.size() - 1]->next = NULL;
vector<TreeLinkNode*> temp;
for(int i = 0; i < root.size(); ++ i) {
if(root[i] == NULL) continue;
if(root[i]->left != NULL) temp.push_back(root[i]->left);
if(root[i]->right != NULL) temp.push_back(root[i]->right);
}
bfs(temp);
}
};