关于递归算法求二叉树深度算法
答案:2 悬赏:80 手机版
解决时间 2021-05-05 09:08
- 提问者网友:一抹荒凉废墟
- 2021-05-04 18:10
关于递归算法求二叉树深度算法
最佳答案
- 五星知识达人网友:往事埋风中
- 2021-05-04 18:42
int height(Bitree T)
{
if (T==NULL) return 0;
u=height(T->lchild);
v=height(T->rchild);
if (u>n) return (u+1) //n应该是v
return (v+1)
}
if 中的n应该是v。
其思想是,一个节点的深度是他的两个子节点中深度的最大值再加上1。这个算法中u得到其左子数的深度,V获得右子树的深度。则这个节点的深度就是u和v中最大的再加上1。
要想获得树的深度,就先获得这个树中根节点的两个儿子的深度,比较两个儿子的深度,取其中最大值在加上1最终获得树的深度。根节点的两个儿子的深度就通过这个上面的原则递归求得。
{
if (T==NULL) return 0;
u=height(T->lchild);
v=height(T->rchild);
if (u>n) return (u+1) //n应该是v
return (v+1)
}
if 中的n应该是v。
其思想是,一个节点的深度是他的两个子节点中深度的最大值再加上1。这个算法中u得到其左子数的深度,V获得右子树的深度。则这个节点的深度就是u和v中最大的再加上1。
要想获得树的深度,就先获得这个树中根节点的两个儿子的深度,比较两个儿子的深度,取其中最大值在加上1最终获得树的深度。根节点的两个儿子的深度就通过这个上面的原则递归求得。
全部回答
- 1楼网友:笑迎怀羞
- 2021-05-04 20:09
u,v 分别求出当前节点左子树和右子树的深度(高度),
然后当前节点的 深度就等于左右子树里面较大的那个+1.
if (u>n) return (u+1)
return (v+1)
这句就是返回较深的+1.
u=height(T->lchild);
v=height(T->rchild);
这两句就是递归的调用,求深度了。
if (T==NULL) return 0;
这个就是终止条件了,如果没有子节点就返回。
然后当前节点的 深度就等于左右子树里面较大的那个+1.
if (u>n) return (u+1)
return (v+1)
这句就是返回较深的+1.
u=height(T->lchild);
v=height(T->rchild);
这两句就是递归的调用,求深度了。
if (T==NULL) return 0;
这个就是终止条件了,如果没有子节点就返回。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯