在最长的距离二叉树结点
生活随笔
收集整理的這篇文章主要介紹了
在最长的距离二叉树结点
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
分為兩:①當后最長的距離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{d(U1,V1),…, d(Uk,Vk),max1+max2+2}。
?
採用深度優先搜索如圖3-15,僅僅須要遍歷全部的節點一次,時間復雜度為O(|E|)=O(|V|-1),當中V為點的集合。E為邊的集合。
?
版權聲明:本文博主原創文章。博客,未經同意不得轉載。
轉載于:https://www.cnblogs.com/yxwkf/p/4791008.html
總結
以上是生活随笔為你收集整理的在最长的距离二叉树结点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 碎片笔记
- 下一篇: .NET基础 (05)内存管理和垃圾回收