思路:按行遍歷完全二叉樹
/**
* 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;
queue<TreeLinkNode*> vec;
vec.push(root);
TreeLinkNode *pre;
TreeLinkNode *node;
TreeLinkNode *r = root;
TreeLinkNode *f = root;
while(!vec.empty()){
pre = vec.front();
node = vec.front();
vec.pop();
if(pre->left != NULL){
vec.push(pre->left);
}
if(pre->right != NULL){
vec.push(pre->right);
r = pre->right;
}
while(node != f){
node = vec.front();
vec.pop();
pre->next = node;
pre = node;
if(node->left != NULL){
vec.push(node->left);
}
if(node->right != NULL){
vec.push(node->right);
r = node->right;
}
}
node->next = NULL;
f = r;
}
}
};