有没有办法在一次遍历中返回BST删除的布尔成功?

问题描述:

也就是说,返回树中是否实际删除元素的布尔值。有没有办法在一次遍历中返回BST删除的布尔成功?

常见的实现是调用find()以查看元素是否在树中,如果find()找不到目标,则返回false。这需要向下两次:find()和remove()。

一种方法是设置私人字段标志,您将在remove()期间查找元素时设置该标志。似乎还挺粗。任何人有更好的想法?

+1

为什么你要搜索的两倍?找到它,如果它在那里删除它并返回true,否则返回false。 – Blorgbeard

+0

BST删除是递归的。如何在返回一个节点(设置新子树的根)的同时返回true? – user3724404

+0

实施细节。你在谈论特定的代码吗?也许你应该发布它。 – Blorgbeard

您可以在一次遍历中删除BST中的元素。在去除过程中找到元素不需要单独遍历。要在首次遍历中删除BST中的元素,请执行以下步骤:

  1. 搜索要删除的节点。
  2. 如果节点发现应用消除算法,

要清楚的认识是指enter link description here

+0

也许你误解了这个问题?您无法通过调用void函数来知道元素是否从您的树中移除。 – user3724404