2011-04-27 362 views
0

1)術語不平衡二叉樹是什麼意思,以及我們如何編寫算法來測試它?偏斜二叉樹

2)我有一個問題,它要求編寫一個函數來測試二叉樹的深度。我認爲這會工作,但不知道....:

function getDepth(Node n){ 
    if(node == null){ 
     return 0; 
    } 
    return 1 + Math.max(getDepth(node.left), getDepth(node.right)); 
} 
getDepth(root); 

誰能給我指點...

+0

它似乎是「歪斜的二叉樹」這個詞實際上是兩個不同概念的組合。請重新說明你在找什麼。 – FreeSnow 2011-04-27 16:32:34

+0

還有很多unbalenced的定義 - 例如,查找關於AVL樹和紅黑樹的wikipedia文章。 – hugomg 2011-05-06 16:40:12

回答

0

1)偏移二進制樹不是100%,普遍常用的術語(甚至谷歌獲得困惑)。搜索你的講座筆記或書籍,看看他們的意思。

  1. 要測試是一棵樹有許多leves爲節點,你可以只使用你已經擁有的功能纔是最重要的層面,另一個函數來計算節點的數量。

    但是,如果發現節點數量不能與層數相同,則應該abe來製作另一個更高效的算法,該算法可以提前終止。

  2. 深度函數是正確的。畢竟,這是不是從樹深度的定義中直接取得?

    (唯一可能的挑剔是深度(空)= 1,只要確保你不需要深度(空)= 0,而不是)

+0

偏斜二叉樹是樹儘可能深的地方 - 即它具有與層級一樣多的節點(假定基準級別= 1) – user559142 2011-05-06 10:35:58

0

歪斜二叉樹是具有唯一樹一種類型的子樹。如果一棵樹只剩下子樹,那麼它就是左傾斜的樹,反之亦然。