問題描述:
給出一棵二叉樹,求二叉樹上最遠的兩個節點的距離
分析:最長距離即兩個節點間經過的路徑最長,可以把問題分解為每個節點的左子樹的最大深度與右子樹的最大深度之和的最大值,保留這個最大值並對比各節點的最大值即可得出
//遞迴演算法如下:
int max=0;
int depth(node *root)
int depleft=0;
int depright=0;
if(root->left!=null)
if(root->right!=null)
if((depleft+depright)>max)
max=depleft+depright; //更新當前最大值
return depleft>depright?depleft:depright;
}
二叉樹結點的最大距離
二叉樹結點中的最大距離 struct node int nmaxlen 0 尋找樹中最長的兩段距離 void findmaxlen node proot if proot pleft null if proot pright null if proot pleft null if proot pri...
二叉樹中節點的最大距離
二叉樹中距離最長的兩個節點一定是葉子節點或根節點,假設有乙個節點不是葉子節點或根節點,那麼其父親或者其兒子到另外乙個節點的距離比最大距離要大,所以假設錯誤。如果距離最長的兩個節點有乙個是根,那麼最長距離就等於樹的高,而且根只有乙個兒子,否則一定存在更長的距離。對於某乙個節點,設其左兒子和右兒子的高度...
二叉樹中節點的最大距離
如果我們把二叉樹看成乙個圖,父子節點之間的連線看成是雙向的,我們姑且定義 距離 為兩節點之間邊的個數。寫乙個程式求一棵二叉樹中相距最遠的兩個節點之間的距離。書中對這個問題的分析是很清楚的,我嘗試用自己的方式簡短覆述。計算乙個二叉樹的最大距離有兩個情況 只需要計算這兩個情況的路徑距離,並取其大者,就是...