求兩個節點之間最遠的距離:
(1)兩個節點都是葉子結點
(2)乙個是葉子結點乙個是根節點
思路:(1)如果具有最遠距離的兩個節點經過了根節點,那麼最遠的距離就是左邊最深的深度加上右邊最深的深度之和。
(2)如果具有最遠距離的兩個節點之間的路徑不經過根節點,那麼最遠的距離就在根節點的其中乙個子樹上的兩個葉子結點。
int getdistance(binarytreenode*root, int &nmaxdistance)
int getfardistance()
int height(node* root, int& distance)
int lefth = height(root->_left,distance);
int righth = height(root->_right,distance);
if (lefth+righth > distance)
return lefth > righth ? lefth+1 : righth+1;
}
求二叉樹中最遠的距離
分為兩種情況來討論 1 二叉樹中最遠的兩個節點經過根節點,如情況a 2 二叉樹中最遠的兩個節點不經過根節點,在其左子樹或者右子樹中 所以 二叉樹中最遠的距離 左子樹距離根節點最遠的節點 右子樹距離根節點最遠的節點 左子樹中最遠的距離,右子樹中最遠的距離 三者的最大值 include include ...
二叉樹最大距離
問題描述 給出一棵二叉樹,求二叉樹上最遠的兩個節點的距離 分析 最長距離即兩個節點間經過的路徑最長,可以把問題分解為每個節點的左子樹的最大深度與右子樹的最大深度之和的最大值,保留這個最大值並對比各節點的最大值即可得出 遞迴演算法如下 int max 0 int depth node root int...
二叉樹中最遠的兩個結點的距離
解法一 求出每個結點作為根結點時的最遠距離 時間複雜度太高 struct bintreenode int depthbin bintreenode root void findmaxlenofbintree bintreenode root,int maxpath farestroot root l...