删除二进制搜索树Python中的节点

时间:2016-12-23 16:35:03

标签: python-2.7 tree binary-search-tree

以下是删除有两个孩子的节点的代码

parent_for_delete = node_for_delete
        replacer = node_for_delete.right
        while replacer.left:
            parent_for_delete = replacer
            replacer = replacer.left
        node_for_delete.data = replacer.data
        if parent_for_delete.left == replacer:
            parent_for_delete.left = replacer.right
        else:
            parent_for_delete.right = replacer.right

这是调用

if node_to_delete is not None:
        root.delete(deleted_node)

我用drawtree库打印树

问题是例如当我有下面的树时:

   5
 /   \
2     8

我删除了我的树形状如下:

2
 \
  8

我的预期结果是:

8
 \
  2

我做错了什么?

0 个答案:

没有答案