《编程之美》:求二叉树中节点的{zd0}距离- DiaoCow:a Programming ...

看到这题,{dy}时间就联想到了求二叉树深度(通过分别求左右子树的深度,然后合并(取{zd0}值加1)从而得到了根节点的深度(其实就是分治思想))

代码如下:

int Depth(Node *p)
{
int l_d , r_d;

if(p == NULL)
{
return 0;
}
l_d
= Depth(p->lChild);
r_d
= Depth(p->rChild);

return Max(l_d , r_d) + 1;
}

 

而现在我们要求节点的{zd0}距离,我们可以用同样的方法去思考:对一个节点A,其子树中节点的{zd0}距离一定是A左子树的深度 + A右子树的深度,所以我们只要用“分治”的思想递归求解即可,并且用一个MaxLen来维护{zd0}值:

int MaxLen = 0;

int FindMaxLen(Node *p)
{
int l_Len , r_Len;

if(p == NULL)
{
return 0;
}
l_Len
= FindMaxLen(p->lChild);
r_Len
= FindMaxLen(p->rChild);
MaxLen
= Max(l_Len + r_Len , MaxLen);

return Max(l_Len , r_Len) + 1;
}

个人感觉比书上的简洁很多~

 

 

posted on 2010-06-22 13:11 阅读(3)   所属分类:

郑重声明:资讯 【《编程之美》:求二叉树中节点的{zd0}距离- DiaoCow:a Programming ...】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——