void connect2(TreeLinkNode *root) {
TreeLinkNode* level_head = root;
while(level_head != NULL)
{
TreeLinkNode* next_level_head = NULL;
bool get_next_head = false;
TreeLinkNode* cur_node = level_head;
vector<TreeLinkNode*> two_nodes;
while(cur_node != NULL)
{
if(cur_node->left != NULL)
{
if(!get_next_head)
{
next_level_head = cur_node->left;
get_next_head = true;
}
two_nodes.push_back(cur_node->left);
if(two_nodes.size() == 2)
{
two_nodes[0]->next = two_nodes[1];
two_nodes.erase(two_nodes.begin());
}
}
if(cur_node->right != NULL)
{
if(!get_next_head)
{
next_level_head = cur_node->right;
get_next_head = true;
}
two_nodes.push_back(cur_node->right);
if(two_nodes.size() == 2)
{
two_nodes[0]->next = two_nodes[1];
two_nodes.erase(two_nodes.begin());
}
}
cur_node = cur_node->next;
}
level_head = next_level_head;
}
}
[LeetCode] Populating Next Right Pointers in Each Node II
最新推荐文章于 2021-09-24 12:05:40 发布