我需要打印出堆的所有叶子,但我不确定我是否正确地完成了它。
例如:数组{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);
}
答案 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);
}
}