处理时每层节点都是个链表。将该链表的左右子节点连接起来。【尝试用递归,但出现超时】
/**
* 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) {
TreeLinkNode* head = new TreeLinkNode(-1);
while (NULL != root)
{
head->next = NULL;
TreeLinkNode* p = head;
while (NULL != root)
{
if (NULL != root->left)
{
p->next = root->left;
p = p->next;
}
if (NULL != root->right)
{
p->next = root->right;
p = p->next;
}
root = root->next;
}
root = head->next;
}
delete head;
}
};