分為兩種情況來討論:
1)二叉樹中最遠的兩個節點經過根節點,如情況a
2)二叉樹中最遠的兩個節點不經過根節點,在其左子樹或者右子樹中
所以:二叉樹中最遠的距離 = 【(左子樹距離根節點最遠的節點 + 右子樹距離根節點最遠的節點),左子樹中最遠的距離,右子樹中最遠的距離】三者的最大值
#include #include #include #include /* maxleft 是指左子樹中離根節點最遠的距離,maxright指右子樹離根節點最遠的距離 */
int getmaxdistance(treenode* root,int &maxleft,int &maxright)
int maxll,maxlr,maxrl,maxrr;
int leftmaxdis,rightmaxdis;
if(!root->left)else
if(!root->right)else
return max(max(leftmaxdis,rightmaxdis),maxleft+maxright);
}
二叉樹系列問題 求二叉樹中最遠節點的距離
求二叉樹中最遠節點的距離,我們首先要對最遠距離有清晰的認識,最遠距離分為以下三類情況 因此我們在計算距離時總要與前一次的距離作比較,只有當此次左右距離之和大於max值才更改max的值,我們可以使用後續遍歷來計算最遠距離,此時時間複雜度為o n 使用前序遍歷也是可以的,但時間複雜度為o n n 綜合比...
求二叉樹中最遠的兩個節點的距離
求二叉樹中最遠的兩個節點的距離 短短的 中其實涉及到了三道題目 利用已知序列遞迴的建一棵二叉樹遞迴的求一棵樹的深度求二叉樹中距離最遠的兩個節點的距離 利用類似的思想判斷一棵樹是否為平衡二叉樹 利用遞迴求樹的深度的思想,在其中加入乙個最大距離的引用的引數,利用了引用引數的特性,即可求得最大距離,比較簡...
二叉樹中最遠的兩個結點的距離
解法一 求出每個結點作為根結點時的最遠距離 時間複雜度太高 struct bintreenode int depthbin bintreenode root void findmaxlenofbintree bintreenode root,int maxpath farestroot root l...