我的代码中的分段错误错误,用于级别顺序遍历

时间:2015-04-08 10:06:39

标签: tree segmentation-fault

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);
  }
}

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

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

1 个答案:

答案 0 :(得分:0)

问题在于您通过遍历跳过某些级别。在您的示例中,如果if(temp_node->left->left)不存在,temp_node->left将生成细分错误错误。因此,对于每次迭代,您应该检查if(temp_node->left)if(temp_node->right)

有关详细实施,您可以参考here