我的代码中存在关卡顺序遍历的分段错误错误


void printLevelOrder(struct node* root)
{
  int rear, front;
  struct node **queue = createQueue(&front, &rear);  
  struct node *temp_node = root; 
  while(temp_node)
  {
    printf("%d ", temp_node->data);
    /*Enqueue left child */
    if(temp_node->left->left)
      enQueue(queue, &rear, temp_node->left->left);
    /*Enqueue right child */
    if(temp_node->left->right)
      enQueue(queue, &rear, temp_node->left->right);
      if(temp_node->right->left)
      enQueue(queue, &rear, temp_node->right->left);
    /*Enqueue right child */
    if(temp_node->right->right)
      enQueue(queue, &rear, temp_node->right->right);
    /*Dequeue node and make it temp_node*/
    temp_node = deQueue(queue, &front);
  }
}

我在上面的代码中遇到分段错误错误。我正在使用关卡顺序遍历来打印树中的备用关卡。

请帮忙。逻辑对我来说似乎是正确的。

问题是你在遍历过程中跳过了一些关卡。在您的示例中,如果分段错误不存在temp_node->left if(temp_node->left->left)将生成该错误。因此,对于每次迭代,都应改为检查if(temp_node->left)if(temp_node->right)

有关详细实现,您可以参考此处。

相关内容

  • 没有找到相关文章

最新更新