問題定義 把二叉樹看成一個圖,父子節點之間的連線看成是雙向的,定義“距離”為兩個節點之間的邊數。例如下圖中最大距離為紅線的條數為6. 分析 定義:過以節點x作為根節點的子樹中,節點間的最大距離為Dis(x)。 上圖,左圖中Dis(根節點)最大,右圖中Dis(根節點->left ...
.問題描述 寫一個程序求一棵二叉樹相距最遠的兩個節點之間的距離 如下圖: .分析與解法 對於任意一個節點,以該節點為根,假設這個根有k個孩子節點,那么距離最遠的兩個節點U與V之間的路徑與這個根節點的關系有兩種。 .若路徑經過Root,則U和V屬於不同子樹的,且它們都是該子樹中到根節點最遠的節點,否則跟它們的距離最遠相矛盾 .如果路徑不經過Root,那么它們一定屬於根的k個子樹之一,並且它們也是該 ...
2012-08-18 14:50 0 4451 推薦指數:
問題定義 把二叉樹看成一個圖,父子節點之間的連線看成是雙向的,定義“距離”為兩個節點之間的邊數。例如下圖中最大距離為紅線的條數為6. 分析 定義:過以節點x作為根節點的子樹中,節點間的最大距離為Dis(x)。 上圖,左圖中Dis(根節點)最大,右圖中Dis(根節點->left ...
如果我們把二叉樹視為一個圖,父子節點之間的連線視為雙向的,我們姑且定義為“舉例”為兩節點之間邊的個數。寫一個程序求一顆二叉樹中相距最遠的兩個節點之間的距離(《編程之美》3.8) 思路:如果兩個節點相距最遠,一定是兩個葉子節點,或者是一個葉子節點到它的根節點。 根據相距最遠的兩個 ...
轉載請注明原文地址:http://www.cnblogs.com/ygj0930/p/6618074.html 二叉樹中的結點間距離:從結點A出發到達B,每個結點只能走一次,AB路徑上的結點數就是AB間距離。 由於從一個結點出發時,只有兩種方向可走:向上經過父節點到達它的兄弟 ...
數據結構中一直對二叉樹不是很了解,今天趁着這個時間整理一下 許多實際問題抽象出來的數據結構往往是二叉樹的形式,即使是一般的樹也能簡單地轉換為二叉樹,而且二叉樹的存儲結構及其算法都較為簡單,因此二叉樹顯得特別重要。 二叉樹(BinaryTree)是n(n≥0)個結點的有限集,它或者是 ...
二叉樹是一種非常經典的數據結構。如果我們把二叉樹看成一個圖,父子節點之間的連線看成是雙向的,我們姑且定義"距離"為兩節點之間邊的個數。寫一個程序求一棵二叉樹中相距最遠的兩個節點之間的距離。 下面我們隨意構造出一棵二叉樹,計算它的最大距離,如上圖,節點之間單位距離為1,最大距離(紅色線條 ...
問題(假定根節點位於第0層) 1. 層次遍歷二叉樹(每層換行分開) 2. 層次遍歷二叉樹指定的某層 例如 上圖中 1. 2. 可以看出得出第二問的解,第一問迎刃而解了,所以從問題二下手 分析與解 1. 層次遍歷二叉樹指定的某層 可以得出 ...
求二叉樹中任意兩個結點的距離 實現步驟: 計算跟到第一個結點的距離; 計算跟到第二個結點的距離; 計算lca; 計算跟到lca結點的距離; 結果為(1) + (2) - 2 * (4),因為重復計算了兩次的從跟到lca結點的距離; 1 class ...
最大距離和最大距離的兩個結點(假設二叉樹中取最大距離的兩個結點唯一)。 輸入 ...