推荐回答
你这个是使用递归实现查找元素x所处层数x的值要么在二叉树中找不到,要么只能找到一个,换句话说你在设计整棵树的时候,每个节点的值都应该不同,这个函数才正确。num1,num2分别记录在左子树,右子树中查找到x的层数n记录最终返回的结果层数ift==NULL//判断节点是否为空,空则返回0,即没找到return0;else{ift->data==x//如果元素值等于x,则返回1.注意,这里的1是相对于以t为根节点的层数值。return1;num1=Xdeptht->lchild,x;//如果当前节点元素值不等于1,进入左子树进行查找,返回x所处的层数,当然此时的num1所代表的层数是相对以t的左节点为根的树的层数num2=Xdeptht->rchild,x;//进入右子树进行查找,返回x所处的层数n=num1+num2;//由于在设计树的时候,就说了,每个节点的值不同。因此要么在左子树中找到要么在右子树中找到num2>0&&num1==0//因此这里可以改成n=num1>num2?num1:num2;应该也可以。ifnum1!=0||num2!=0//该条件表示找到了x元素n++;//这时n的值要加1,原因前面已经说过了。n的当前值只是相对于t的左子女或者右子女的层数值。如果还有什么疑问,再探讨~。
连伟平2019-12-21 20:06:27
提示您:回答为网友贡献,仅供参考。