樹上最遠距離練習

2021-07-27 16:17:32 字數 733 閱讀 9227

從二叉樹的節點a出發,可以向上或者向下走,但沿途的節點只能經過一次,當到達節點b時,路徑上的節點數叫作a到b的距離。對於給定的一棵二叉樹,求整棵樹上節點間的最大距離。

給定乙個二叉樹的頭結點root,請返回最大距離。保證點數大於等於2小於等於500.

對於給定的節點root,最遠距離只可能來自以下三種情況:

1、左子樹的最遠距離

2、右子樹的最遠距離

3、左子樹上距離root最遠長度和右子樹上距離root最遠長度之和加1;

遞迴遍歷即可。每個遞迴返回兩個值,乙個是距離root的最遠距離,另乙個是以root為頭節點的樹上最遠距離,使用動態陣列或者vector,不能直接返回陣列指標,每個區域性函式執行完記憶體就釋放掉了。

/*

struct treenode

};*/

class longestdistance

vector

recurfind(treenode* root)

vector

left=recurfind(root->left);

vector

right=recurfind(root->right);

a[1]=max(left[1],right[1])+1;

a[0]=max(max(left[0],right[0]),left[1]+right[1]+1);

return a;

}};

樹上最遠距離 後序遍歷

從二叉樹的節點a出發,可以向上或者向下走,但沿途的節點只能經過一次,當到達節點b時,路徑上的節點數叫作a到b的距離。對於給定的一棵二叉樹,求整棵樹上節點間的最大距離。給定乙個二叉樹的頭結點root,請返回最大距離。保證點數大於等於2小於等於500.思路 修改後序遍歷 對於給定的節點root,最遠距離...

最遠距離(C 實現)

給定一組點 x,y 求距離最遠的兩個點之間的距離。輸入 第一行是點數n n大於等於2 接著每一行代表乙個點,由兩個浮點數x,y組成。輸出 輸出一行是最遠兩點之間的距離。樣例輸出 6 34.0 23.0 28.1 21.6 14.7 17.1 17.0 27.2 34.7 67.1 29.3 65.1...

樹的直徑(最遠距離)

輸入資料 5 51 2 2 2 4 3 2 5 1 4 5 4 1 3 5 有5個點5條邊 第一次bfs從1號點開始找到最遠距離3號距離為5 第二次bfs從3號點開始找最遠距離點10 include include include define max 100000 using namespace ...