问答题 设一棵二叉树采用二叉链表作为它的存储表示,指针t指向根结点,试编写一个在二叉树中查找值为x的结点,并打印该结点所有祖先结点的算法。在此算法中,假设值为x的结点不多于一个且数据类型为int型。
【正确答案】算法采用前序遍历的递归算法,在典型的遍历算法的参数表中增加了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; }
【答案解析】