2010-10-17 208 views
-4

可能重複:
the # of internal nodes遞歸算法樹

我正在當然,這是在CS數據結構。我有這個問題,要求提供遞歸算法,通過給定樹的根節點來確定樹的高度。 我將解釋什麼是樹的根節點:

        root 
           /\ 
        internal node internal node 
         /\     \ 
      external node internal node  external node 
           /    
          external node 

什麼我目前做的是:

  • 輸入:INT R(R =根節點)T是樹
  • 輸出:整數H(H =樹的高)
  • HIGHT(T,R):

  • 如果r爲T的根節點然後

  • 回報1
  • 其他
  • ^h < --- 1
  • 爲每個孩子w^T中的R做
  • ^h < ---最大(H,HIGHT(T,W))
  • 返回1 + H

,我到目前爲止....

+8

請發表您到目前爲止寫的僞代碼。人們通常不喜歡只爲你寫代碼。 – 2010-10-18 00:02:13

+2

到目前爲止你做了什麼? – Woot4Moo 2010-10-18 00:02:30

+5

停止發佈相同的問題一遍又一遍...... http://stackoverflow.com/questions/3943804/the-of-internal-nodes – Woot4Moo 2010-10-18 00:03:12

回答

2

由於這是作業,我不想放棄解決方案,但這裏有一個有希望的幫助提示。

專注於樹的最頂端,根節點和孩子正好在它下面。如果您知道子樹的高度,那麼如何幫助您計算父樹的高度?

在你給了,想象一下你知道的高度(標有[方括號])子樹和例子想找到根樹的高度:

       root[?] 
          /\ 
       internal node[3] internal node[2] 
        /\     \ 
     external node internal node  external node 
          /    
         external node 

另一個提示是你的代碼將具有以下結構,這是recursive programs通用的結構。您將有一個基本案例,然後歸納步驟其中您用較小的子問題表示您的問題。

int height(Node root) { 
    // The base case is that the node has no children, so it is a tree of height 1. 
    if (root has no children) return 1; 

    // Otherwise, apply the hint from above. Remember, you can call this height() 
    // function on the children of the root! 
} 
+0

輸入:int r(r =根節點)T是樹 輸出:int h(h =樹的高度) hight (T,R): 如果r爲T的根節點然後 返回1否則 ħ <--- T中1 爲每個子W R的做 ħ<---最大值(H, HIGHT(T,W)) 返回1 + H – Nofel 2010-10-18 02:54:40

+0

我寫在Q中.. – Nofel 2010-10-18 02:55:05