2011-06-15 66 views
1

我遇到了下面的代碼,儘管有別人的幫助,但我仍然無法理解它。 這段代碼應該實現一個通用樹。 Single_List和Single_Node類也可用於實現。實現常規樹

 template <class Object> 
     class General_tree { 
      private: 
       Object element; // the stored in the node 
       Single_list< General_tree<Object> * > children; 
        // a linked list of pointers to general trees 
      public: 
       Object retrieve() { 
        return element; 
       } 
       // ... 
     }; 

有人能告訴我這個類的一個實例是由什麼組成的?

我認爲這將包括

      [element value in node made by Single_Node] -----> 
          /       next pointer (part of Single_list class) 
          /
         /children pointer to another such instance of General_Tree 
          V 

然後,這些實例可以被組合成一個樹......我仍然習慣面向對象設計我想是這樣,請讓我知道如果這個推理解釋是正確的?

謝謝!

+0

似乎沒有「下一個指針」。 – 2011-06-15 09:07:27

+0

http://www.boost.org/doc/libs/1_41_0/doc/html/property_tree.html值得一看,如果你想在一些真正的(非訓練)代碼中做這樣的事情。 – 2011-06-15 09:10:49

回答

3

樹對象實際上是在樹中,其中children點到下一級的節點,這將有指向他們兒童等

它們共同構成一個子樹的節點(或整棵樹,如果它是根節點)。

+0

謝謝,你的回覆非常清楚,寫得很好。只是要澄清這一點:當你說下一個級別的「節點」,你的意思是在下一個級別單個節點。那麼一個實例的子指針指向下一級右側的一個適當的節點? – rrazd 2011-06-15 12:39:21

+0

@rrazd - 「children」是指針列表,每個指針都指向一個孩子。因爲它是一個列表,所以在下一級可以有不同數量的節點,就像真正的樹枝一樣。 – 2011-06-15 12:47:28

+0

因此,要在一個實例中添加多個子節點,您只需在Single_List類中使用push_front()函數?因此,子指針將成爲鏈表的頭指針?這些爲push_front生成的節點將是通用樹指針類型,因此它們也會有子指針....這是正確的嗎? – rrazd 2011-06-15 12:55:19