《编程之美》3.8题,没必要记录每个节点的左右子树中的最长距离,只要将其返回给父节点即可。同时记录出现左右子树距离和的最大值。
int findMaxDistance(NODE *pRoot)
{
static int maxDistance=-1;
int leftDistance;
int rightDistance;
if(pRoot==NULL)
{
return -1;
}
leftDistance=findMaxDistance(pRoot->left)+1;
rightDistance=findMaxDistance(pRoot->right)+1;
if(maxDistance<leftDistance+rightDistance)
{
maxDistance=leftDistance+rightDistance
}
return leftDistance>rightDistance?leftDistance:rightDistance;
}