从二叉树中删除重复项

see*_*ker 5 language-agnostic algorithm tree binary-tree

我试图想出一种从二叉树/二叉搜索树中删除重复项的算法。到目前为止我能想到的最好的是

将树的中序遍历存储在数组中。
如果树没有排序,则对数组进行排序。
从数组中删除重复项并重建二叉树。

我们是否还需要存储树的前序遍历来重建树?

O(n log n ) 这就带来了时间和空间上的复杂性 O(n)。我们可以做得更好吗?伪代码/代码示例将不胜感激

编辑1:假设二叉树的结构由以下对象给出

public class Node
{
   int data;
   Node right;
   Node left;
// getters and setters for the left and right nodes
}
Run Code Online (Sandbox Code Playgroud)

rol*_*lfl -2

在这种情况下的技巧是一开始就不要存储重复项......

当您将节点添加到树中时,如果树中已经有重复的节点,为什么不能决定不添加该节点?