数据结构的二叉树求深度的问题.

数据结构的二叉树求深度的问题.

typedef struct node

{ char data;

struct node *lchild,*rchild;

}JD;

int BiTreeDepth(JD *T)

{ /* 初始条件:二叉树T存在.操作结果:返回T的深度 */

int i,j;

if(!T)

return 0;

if(T->lchild)

i=BiTreeDepth(T->lchild); //递归求左子树的深度

else

i=0;

if(T->rchild)

j=BiTreeDepth(T->rchild); //递归求右子树的深度

else

j=0;

return i>j?i+1:j+1; //取深度值大者加1作为该树的深度

}

疑问是.这个算法中的求深度的语句:i=BiTreeDepth(T->lchild)

为什么递归结束后i就等于深度了呢?为什么每递归一次i就加上了1呢?.十分奇怪!

问答/380℃/2024-12-31 22:22:18

优质解答:

那你说为什么不+1呢?

return i>j?i+1:j+1;

每次回调的时候都会比较i和j的值,即左子树的深度和右子树的深度,选较大者加1后作为以自己为根节点的树的深度

我来回答

猜你喜欢

Copyright © 作文乐园 Inc.
Www.821218.Com All Rights Reserved
网站、品牌合作请联系