【发布时间】:2013-04-12 04:04:33
【问题描述】:
我需要打印出一个堆的所有叶子,但我不确定我是否正确地完成了它。
例如:数组{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);
}
【问题讨论】:
-
你尝试编译了吗?
-
另外,提示:您是否需要同时检查左右子树?
-
进行深度优先搜索(向左递归然后向右递归)并在每次没有左和右时打印出来。然后你会很快打印出所有的叶子:)
-
跟进 Kotepillar 的评论,您是否尝试过 running 呢?