/* // Definition for a Node. class Node { public: int val; Node* left; Node* right; Node* next; Node() : val(0), left(NULL), right(NULL), next(NULL) {} Node(int _val) : val(_val), left(NULL), right(NULL), next(NULL) {} Node(int _val, Node* _left, Node* _right, Node* _next) : val(_val), left(_left), right(_right), next(_next) {} }; */ class Solution { public: Node* connect(Node* root) { if(!root) { return 0; } Node* Left=connect(root->left); Node* Right=connect(root->right); //子树之间的连线 if(Left && Right) { while(Left && Right) { Left->next=Right; Left=Left->right; Right=Right->left; } while(Right) { Right->next=NULL; Right=Right->right; } root->next=NULL; return root; } else if(!Left && Right) { while(Right) { Right->next=NULL; Right=Right->right; } root->next=NULL; return root; } else if(!Right && Left) { while(Left) { Left->next=NULL; Left=Left->right; } root->next=NULL; return root; } else{ root->next=NULL; return root; } } };