打印堆的所有叶子

时间:2013-04-12 04:04:34

标签: c pointers heap nodes

我需要打印出堆的所有叶子,但我不确定我是否正确地完成了它。

例如:数组{A,B,C,D,E,F,G,H,I,J}

                  A
              B       C
           D    E   F   G
          H I  J   

所以我的功能应该打印出来:H I J F G

这是对的吗?

void leafdisplay(node *p)
{
    if(p->left ==NULL && p->right ==NULL)
    {
        cout<<p->info;  //  display the node
    }
    else if (p->left==NULL&&p->right!=NULL)
        leafdisplay(p->right);
    else if(p->left!=NULL&&p->right==NULL)
        leafdisplay(p->left);
    else if(p->left!=NULL&&p->right!=NULL)
        leafdisplay(p->left);       
    leafdisplay(p->right);
}

1 个答案:

答案 0 :(得分:0)

在最后一个if循环

中缺少{ }
else if(p->left!=NULL&&p->right!=NULL)
{
    leafdisplay(p->left);       
    leafdisplay(p->right);
}

您可以像这样优化代码

void leafdisplay(node *p)
{
  if(p->left ==NULL && p->right ==NULL) 
  {
    cout<<p->info;  //  display the node
  }
  else if (p->left==NULL)
    leafdisplay(p->right); 
  else if(p->right==NULL)
    leafdisplay(p->left); 
  else
  {
    leafdisplay(p->left);       
    leafdisplay(p->right);
  }
}