帮忙说明递归过程的功能2

来源:百度知道 编辑:UC知道 时间:2024/05/31 21:10:36
int unknown(listNode *t, Type&x){
//指针t是带表头结点的单链表的表头指针,数值x是给定值.
if(t=NULL)
return 0;
elsf if (t->leftChild->data= =x)
return 1;
else if (t->rightChild->data= =x)
return 1;
elsf return unknown (t->leftChild,x)+unknown (t->rightChild,x);
}
因为这是模拟试题中的题目,可能要考,希望大家帮忙哦!1

楼的能再详细点不,专业些,应付考试的

此函数遍历二叉树,找结点的值为x的结点的个数,但是如果祖先中有值为x的结点的子孙就不遍历了。
先从根结点开始,如果根结点的儿子的data中有等于x的,就返回一个1,程序结束;否则,接着向下找语句return unknown(t->l,x)+unknown(t->r,x);程序重新为函数unknown建立两个栈,分别以左右子树的根重复上述过程,找到x就返回值,没找到顺着树往下接着找,每次返回的1因为有个return +,所以会被累加,最终函数返回的是个数量,至于这个数量有什么意义,不清楚

楼上的已经解释了函数的过程
功能就是通过遍历二叉树 来查找 listNode *t 中有无 x 这个data值;
其意义就是查找 一个数在链表中是否存在(依据函数的返回值0无 1有)。