https://leetcode.cn/problems/populating-next-right-pointers-in-each-node-ii/
这道题与我之前发布的题目116是一样的解题过程,只是本题所给的数组大小与116不同,这是需要注意的。
116题目链接:
http://t.csdnimg.cn/3Ub02
struct Node* connect(struct Node* root) {
if(root == NULL)
{
return root;
}
//创建一个队列同时将第一层节点加入队列中
struct Node* Q[10001];
int left = 0, right = 0;
Q[right++] = root;
//while循环的迭代是层数
while(left < right)
{
//记录的当前队列的大小
int size = right - left;
for(int i=0 ; i < size;i++)
{
//取出队头元素
struct Node* node = Q[left++];
//链接
if(i < size-1)
{
node->next = Q[left];
}
//拓展下一层的节点
if(node->left)
{
Q[right++] = node->left;
}
if(node->right)
{
Q[right++] = node->right;
}
}
}
//返回根节点
return root;
}