-1

我需要打印出一堆的所有叶子,但我不确定我是否做得正确。

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

                  A
              B       C
           D    E   F   G
          H I  J   

所以我的函数应该打印:HIJFG

这个对吗?

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

1 回答 1

0

缺少{ }最后一个 else 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);
  }
}
于 2013-04-12T04:09:03.487 回答