如果我们把二叉树看成一个图,父子之间的连线看成,姑且定义"距离"为两个之间边的个数。
求一颗二叉树中相距最远两个点之间的距离。
struct NODE
{
NODE *pLeft; //左子树
NODE *pRight;//右子树
int nMaxLeft;
int nMaxRight;
int chValue;
}BitTree;
int nMaxLen = 0;
void FindMaxLen(NODE * pRoot)
{
if(pRoot==NULL)
{
return;
}
if(pRoot->pLeft==NULL){
pRoot->nMaxLeft = 0;
}
if(pRoot->pRight==NULL){
pRoot->nMaxRight = 0;
}
if(pRoot->pLeft!=NULL){
FindMaxLen(pRoot->pLeft);
}
if(pRoot->pRight!=NULL){
FindMaxLen(pRoot->pRight);
}
if(pRoot->pLeft!=NULL){
int temp =0;
if(pRoot->pLeft->nMaxLeft>pRoot->pLeft->nMaxRight){
temp = pRoot->pLeft->nMaxLeft;
}
else{
temp = pRoot->pLeft->nMaxRight;
}
pRoot->nMaxLeft = temp+1;
}
if(pRoot->pRight!=NULL){
int temp =0;
if(pRoot->pRight->nMaxLeft>pRoot->pRight->nMaxRight){
temp = pRoot->pRight->nMaxLeft;
}
else{
temp = pRoot->pRight->nMaxRight;
}
pRoot->nMaxRight = temp+1;
}
if(pRoot->nMaxLeft+pRoot->nMaxRight>nMaxLen){
nMaxLen=pRoot->nMaxLeft+pRoot->nMaxLeft;
}
}
本文详细介绍了如何将二叉树视为图,并通过递归方法找到相距最远两点之间的距离。重点在于理解节点间的连接方式及其在计算距离中的应用。
1453

被折叠的 条评论
为什么被折叠?



