有没有办法在一次遍历中返回BST删除的布尔成功?
问题描述:
也就是说,返回树中是否实际删除元素的布尔值。有没有办法在一次遍历中返回BST删除的布尔成功?
常见的实现是调用find()以查看元素是否在树中,如果find()找不到目标,则返回false。这需要向下两次:find()和remove()。
一种方法是设置私人字段标志,您将在remove()期间查找元素时设置该标志。似乎还挺粗。任何人有更好的想法?
答
您可以在一次遍历中删除BST中的元素。在去除过程中找到元素不需要单独遍历。要在首次遍历中删除BST中的元素,请执行以下步骤:
- 搜索要删除的节点。
- 如果节点发现应用消除算法,
要清楚的认识是指enter link description here
+0
也许你误解了这个问题?您无法通过调用void函数来知道元素是否从您的树中移除。 – user3724404
为什么你要搜索的两倍?找到它,如果它在那里删除它并返回true,否则返回false。 – Blorgbeard
BST删除是递归的。如何在返回一个节点(设置新子树的根)的同时返回true? – user3724404
实施细节。你在谈论特定的代码吗?也许你应该发布它。 – Blorgbeard