在最長的距離二叉樹結點

2021-09-07 02:17:03 字數 733 閱讀 2414

分為兩:①當後最長的距離root

②沒有距離最長root,

1.      若路徑經過根root。則u和v是屬於不同子樹的,且它們都是該子樹中道根節點最遠的節點。否則跟它們的距離最遠相矛盾。這樣的情況如圖3-13所看到的:

2.      假設路徑不經過root。那麼它們一定屬於根的k個子樹之中的乙個。

而且它們也是該子樹中相距最遠的兩個頂點。如圖3-14中的節點a:

設第k棵子樹中相距最遠的兩個節點:uk和vk,其距離定義為d(uk,vk),那麼節點uk或vk即為子樹k到根節點rk距離最長的節點。不失一般性。我們設uk為子樹k中道根節點rk距離最長的節點。其到根節點的距離定義為d(uk,r)。取d(ui,r)(1<=i<=k)中最大的兩個值max1和max2。那麼經過根節點r的最長路徑為max1+max2+2,所以樹r中相距最遠的兩個點的距離為:max。

採用深度優先搜尋如圖3-15,僅僅須要遍歷全部的節點一次,時間複雜度為o(|e|)=o(|v|-1),當中v為點的集合。e為邊的集合。

二叉樹結點的最大距離

二叉樹結點中的最大距離 struct node int nmaxlen 0 尋找樹中最長的兩段距離 void findmaxlen node proot if proot pleft null if proot pright null if proot pleft null if proot pri...

二叉樹最長距離

tag 二叉樹 思路 最長距離一定是兩個葉子節點之間的距離 兩個葉子節點必定以某個節點為根節點 因此用dfs思路自底向上計算經過每乙個節點的最長距離,取其最大值 以每個節點為根節點的最長距離 左子樹的高度 右子樹的高度 package com.zhaochao.tree created by zha...

二叉樹結點最遠距離

給定二叉樹,求取該二叉樹多有節點中距離最遠的結點相隔的距離 以root為根節點的樹上,最大距離求取 情況一 root的左子樹上的最大距離 情況二 root的右子樹上的最大距離 情況三 root左子樹上距離root結點最遠的距離,加上root自身這個節點,再加上root右子樹上距離root右孩子最遠的...