2016-10-25 84 views
-6

我試圖寫一個遞歸來釋放樹中的所有元素。數據結構是一個帶有信息的結構,一個指向左邊的孩子的指針和一個指向兄弟的指針。釋放樹中的所有元素

我怎樣才能釋放樹中的所有節點?我曾嘗試後順序的方法,但我不能得到它的權利
謝謝

樹是不是二進制

+1

歡迎來到SO。請閱讀[問]和[mcve],編輯您的問題,併發布一些相關的代碼。這裏的人不介意讀者。謝謝 – OldProgrammer

+0

你有沒有試過?請向我們展示一些代碼,最好是[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。請告訴我們它是如何工作的。 –

+0

我trid,但該網站不斷顯示一條消息,說我的帖子不符合條件 –

回答

0

有兩種方法可以做到這一點,遞歸地或迭代。

遞歸方法是最簡單的代碼。你寫了一個「自由節點」函數來檢查節點是否有任何後代或兄弟節點,並在每個節點上調用「空閒節點」,然後釋放它被調用的節點。在根節點上執行此「自由節點」操作將釋放整個樹。

迭代方法做同樣的事情,但保留節點列表釋放。下面是迭代方法的草圖:

  1. 創建指向僅包含根節點的節點的指針列表。
  2. 取出列表頭部的節點,添加其所有兄弟並將子節點指向節點列表,然後釋放該節點並將其從列表中刪除。
  3. 如果列表爲空,則停止,即完成。
  4. 轉至步驟2.
相關問題