您的位置:首页 > Web前端 > Node.js

leetcode Populating Next Right Pointers in Each Node &&Populating Next Right Pointers in Each Node||

2014-08-15 20:16 381 查看
两题菊科使用下面的算法,不过此算法的空间复杂度为O(n^2).

代码

class Solution
{
public:
void connect(TreeLinkNode *root)
{
TreeLinkNode *pre, *tempNode;
queue<TreeLinkNode*>queue_pop, queue_push;
bool flag = true;

if(root==NULL)
return ;

queue_pop.push(root);

while(!queue_pop.empty())
{
if(queue_push.empty()&&flag)
{
flag = false;
tempNode = queue_pop.front();
pre = tempNode;
}
else
{
tempNode = queue_pop.front();
pre ->next= tempNode;
pre = tempNode;
}

queue_pop.pop();

if(queue_pop.empty())
{
tempNode->next = NULL;
}

if(tempNode->left)
queue_push.push(tempNode->left);
if(tempNode->right)
queue_push.push(tempNode->right);

if(queue_pop.empty())
{
flag = true;
swap(queue_pop, queue_push);
}
}

}

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐