王道数据结构二叉树深度的计算请问大家这个l和r赋的是什么值啊?

//二叉数深度计算
int treeDepth(BiTree T){
if(T == null)
return 0;
else{
int l = treeDepth(T->lchild);
int r = treeDepth(T->rchild);
return l > r ? l + 1: r + 1;
}
}

这个 treeDepth()是一个递归函数,用递归的方式计算二叉树的深度。
具体实现上,在每个节点都会分别针对左右两个子节点调用treeDepth(),而每个子节点会继续向下调用treeDepth(),嵌套下去,直至遍历结束返回零,然后再从递归调用堆栈中逐级返回,每返回一级时返回的都是当前节点对应的分支的深度,对于上一级节点来说,返回的左分支的深度是l,右分支的深度是r,作为二叉树的深度取其中较大的值,加上根节点本身要加1,所以代码中采用了问号表达式:l>r时返回l+1;l<=r时,返回r+1。
先弄清楚递归函数的原理,再回过头看这段代码,会比较好理解。
温馨提示:答案为网友推荐,仅供参考
相似回答