2009-06-09 92 views
2

我正在開發一個將用於生成樹結構的類。樹的每個節點都需要知道它的父母是誰,以及孩子是誰。用於跟蹤每個節點父節點和子節點的字段不能在基本節點類之外訪問。孩子或基於父母的樹結構

現在我有AddChild和Remove子方法。因此也設置了相關實例的父字段。

所以我現在想知道的是,如果切換此設置和設置方法,類的用戶必須調用Node.SetParent(Node parentNode)和Node.ClearParent(Node oldParentNode)方法。

如果你正在追蹤父母和子女的關係,你爲什麼選擇在父母之間設置子女關係,或者甚至是重要的?

回答

1

在這兩種情況下,當你在一個節點添加到樹,你將需要家長和有問題的子節點既是一個參考,所以我不明白它是如何有所作爲,因爲這兩種方式均在所有情況下均可能。

我建議你搞清楚哪個方向你的邏輯將最有意義(即是容易考慮從葉向上或向下根構建樹),並與去。

0

像這些決定通常取決於如何使用類。如果一個典型的scenerio是從父節點向下構建樹,那麼如果用戶從另一個方向構建它們,則使用AddChild方法通常是最好的,並給出SetParent方法。如果兩者都有需要的話,那麼只要在班級內部進行適當的記錄即可。

(邊注:我通常建立從父樹木)

0

我想你需要所有這三種方法。在構建樹時,AddChild方法看起來更自然。刪除節點有兩個原因。一個是擺脫它,另一個是重組樹(移動一個子樹到另一個分支)。刪除時,RemoveChild運作良好。但重組可以使用SetParent方法來避免進行兩個呼叫。 SetParent也可能成爲各種交易。