求一棵樹中兩節點之間距離(路徑長度)的最大值

2021-08-04 12:18:14 字數 1145 閱讀 5592

題目如下:

/*

* 查詢一棵樹兩節點最長距離

* 如果我們把二叉樹看成乙個圖,父子節點之間的連線看成是雙向的,我們姑且定義"距離"為兩節點之間邊的個數。

*寫乙個程式,求一棵二叉樹中相距最遠的兩個節點之間的距離。測試用的樹:

n1/ \

n2 n3

/ \

n4 n5

/ \ / \

n6 n7 n8 n9

/ /

n10 n11

* **/

**如下:

public class longestpath 

public static int longestpath(treenode root)

if(root.left==null&&root.right==null)

if(root.left==null)

if(root.right==null)

leftlong=longestpath(root.left);

rightlong=longestpath(root.right);

int t=math.max(leftlong, rightlong);

return math.max(t,deep(root.left)+deep(root.right)+2);

}//求樹的深度

public static int deep(treenode root)

if(root.left==null&&root.right==null)

if(root.left==null)

if(root.right==null)

return math.max(deep(root.left),deep(root.right))+1; }

}

treenode類如下:

class treenode 

}

經測試,驗證通過!!!

求一棵樹兩個點的最遠距離

原題 1361 樹的最遠距離 題意 給一棵樹,求兩個點這間的距離的最大值 解析 想了很久,發現兩個點a,b也就只有幾種情況 a為b的父結點 a與b屬於同一父結點的兩條不同分支 看到題目,很多人當然會想到離root最遠的那個結點。我們現在就利用這個結點來設計演算法。證明 最遠路一點以最遠結點為端點 如...

樹 二叉樹任意兩個節點之間路徑的最大長度

int maxdist tree root if root right null root rm maxdist root right 1 如果以該節點為根的子樹中有最大的距離,那就更新最大距離 int sum root rm root lm if sum max return root rm ro...

求二叉樹中兩個節點的最大距離

二叉樹節點的結構體定義如下 struct btreenode 使用遞迴的方式,遍歷二叉樹,然後從葉子節點開始修改結構體中的 maxleft 和 maxright 變數,直至回溯到根節點。詳細的 如下 include using namespace std 將節點儲存的資料型別設為整型 typedef...