2020.10.15每日一题
题目如下:
一看是中等 我唯唯诺诺👊
非递归解法:
分析:由题目我们可以知道,分层填充每个节点的next指针,所以我们很容易想到,通过层次遍历,分层一层层遍历每个节点,然后填充它们的next指针即可
// 代码如下:
Node* connect(Node* root) {
if(root==NULL) return NULL;
queue<Node *> q;
q.push(root);
while(!q.empty())
{
int len = q.size();
for(int i=0;i<len;i++)
{
Node *p = q.front();
q.pop();
if(i<len-1)
{
p->next = q.front();
}
else
p->next = NULL;
if(p->left != NULL) q.push(p->left);
if(p->right != NULL) q.push(p->right);
}
}
return root;
}
递归解法:
// An highlighted block
Node* connect(Node* root) {
if(root==NULL) return root;
if(root->left == NULL || root->right == NULL)
{
return root;
}
root->left->next = root->right;
if(root->next) root->right->next = root->next->left;
connect(root->left);
connect(root->right);
return root;
}