2017-10-20 195 views
0

也就是說,返回樹中是否實際刪除元素的布爾值。有沒有辦法在一次遍歷中返回BST刪除的布爾成功?

常見的實現是調用find()以查看元素是否在樹中,如果find()找不到目標,則返回false。這需要向下兩次:find()和remove()。

一種方法是設置私人字段標誌,您將在remove()期間查找元素時設置該標誌。似乎還挺粗。任何人有更好的想法?

+1

爲什麼你要搜索的兩倍?找到它,如果它在那裏刪除它並返回true,否則返回false。 – Blorgbeard

+0

BST刪除是遞歸的。如何在返回一個節點(設置新子樹的根)的同時返回true? – user3724404

+0

實施細節。你在談論特定的代碼嗎?也許你應該發佈它。 – Blorgbeard

回答

0

您可以在一次遍歷中刪除BST中的元素。在去除過程中找到元素不需要單獨遍歷。要在首次遍歷中刪除BST中的元素,請執行以下步驟:

  1. 搜索要刪除的節點。
  2. 如果節點發現應用消除算法,

要清楚的認識是指enter link description here

+0

也許你誤解了這個問題?您無法通過調用void函數來知道元素是否從您的樹中移除。 – user3724404

相關問題