【正确答案】算法采用前序遍历的递归算法,在典型的遍历算法的参数表中增加了x、path[n]、level、count等参数。x是要找的值;path[]记录从根到含x结点的路径上所有的祖先结点,其容量n由#define声明;level传递当前访问结点的层次,初始值为1;count记录结点个数,可以不事先赋初值。算法代码如下:
int Find_Print(BTNode *t,int x,int path[],int level,int &count)
{
if(t !=NULL)
{
path[level-1]=t→data;
if(t→data==x)
{
count=level;
return 1;
}
if(Find_Print(t→lchild,x,path,level+1,count))
return 1;
return Find_Print(t→rchild,x,path,level+1,count);
}
else
return 0;
}
【答案解析】