與樹相關的演算法

2022-07-07 09:00:17 字數 341 閱讀 5322

1.樹的直徑

須知:對於一棵加權樹,權值定義為樹中兩個結點之間的距離,兩個結點間的最遠距離即為樹的直徑。最遠距離的兩個結點對應樹中的兩個葉子結點,否則兩個結點不構成最遠距離。

m-1:動態規劃

由於兩個結點都是屬於樹的端結點(葉子結點),那麼對兩個結點向上朔源必會得到乙個公共的祖先結點 x。從 x 出發求出其到其子結點的最大距離,用動態規劃思想可以求出其到其葉子結點的最遠距離。

d[x] = max

記經過x結點的兩個結點的長度為f[x],則經過x結點的兩個結點的最遠距離為max(f[x])

樹的相關基礎演算法

樹的相關基礎演算法,先序 中序 後序遞迴與非遞迴,層次遍歷,建立二叉搜尋樹。include include include using namespace std typedef struct tree bstree bstree newbstree int n void createtree bs...

演算法題 樹相關

題目 給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。方法1 遞迴 class solution def maxdepth self,root type root treenode rtype int if root is none return 0else ...

樹與樹演算法

樹 英語 tree 是一種抽象資料型別 adt 或是實作這種抽象資料型別的資料結構,用來模擬具有樹狀結構性質的資料集合。它是由n n 1 個有限節點組成乙個具有層次關係的集合。把它叫做 樹 是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。它具有以下的特點 每個節點有零個或多個子節點 沒...