考虑有一个具有重复元素的 BST。您必须从树中删除所有重复的元素。当找到相等的密钥时在 BST 中的插入是随机的,即在树中插入密钥时,如果所述密钥已经存在,则该密钥可以插入左子树或右子树,但仍然遵循 BST 的基本属性。所以任何节点的左子树上的所有键都小于或等于该节点,并且任何节点的右子树上的键都大于或等于该节点。您将如何删除所有重复的元素。
请注意,如果一个键(例如 15)在整个树中出现三次,我们不会删除所有三个实例,而是只删除两个,无论哪两个都没有关系。
存在以 PreOrder 方式遍历树的蛮力方法。然后在左子树和右子树上查找并删除其键等于所述节点的元素。
有没有更好的方法来解决这个问题?