我需要打印出堆的所有叶子,但我不确定我是否做得正确。
例如:数组 {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);
}
最佳答案
最后一个 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);
}
}
关于c - 打印堆的所有叶子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15962855/