. 为什么l不为0,就找到所在层次。 else return l; 3.为什么l=0时候,才做右子树的遍历。这个判断条件可以去掉么? if (l==0) return Level(b->rchild,x,h+1); int Level(BTNode b,ElemType x,int h) //找到p结点后h为其层次,否则为0 { if (b==NULL) return 0; else if (b->data==x) return h; else { l=Level(b->lchild,x,h+1); if (l==0) return Level(b->rchild,x,h+1); else return l; } }
时间: 2023-06-09 14:03:27 浏览: 50
树的层次遍历
4星 · 用户满意度95%
这是一段二叉树的查找代码,参数 x 表示要查找的元素,参数 h 表示当前节点所在的层次。当节点为空时返回0,查找到目标元素时返回当前层次 h,否则继续向下递归查找。如果左子树中找到目标元素,直接返回其层次;若左子树中没有找到,则需要向右子树中继续查找,此时需要再次调用 Level 函数查找右子树中的目标元素,层次 h 需要加 1。当 l=0 时,表示在左子树中未找到目标元素,则需要继续在右子树中查找,这时需要添加判断条件,否则会陷入死循环,因为无法确定目标元素在左子树还是右子树中。因此,不能去掉这个判断条件。
阅读全文