在二进制子树中删除

时间:2012-11-01 07:36:04

标签: binary-search-tree

我正在尝试删除在这种情况下具有左和右子节点的节点D.

                 D
                /  \ 
               A    F 
                \
                 B

所以当我尝试删除D时,我应该用B替换它,因为B是左子树中的下一个最大元素。因此,我可以用F替换它而不是用B替换它吗?

2 个答案:

答案 0 :(得分:0)

你可以,但它不会是最佳的。您希望您的树始终保持平衡,以便插入和删除将保持在O(log n)

附近

答案 1 :(得分:0)

首先,只是一个二叉树未分类。我假设你的树是二叉搜索树。如果您想要的是保持树的排序比是,则可以使用F替换此特定示例。如果您的树更复杂,如果没有其他操作,您将无法执行此操作 - 例如,如果存在,您将需要对F的子项执行某些操作,并且需要进行额外的不必要处理。