删除二进制搜索树的部分

时间:2014-04-15 22:36:30

标签: python recursion tree search-tree

我正在尝试解决以下问题:

返回修改为仅包含值< = k的二叉搜索树的根。 (使用正常的BST类,我们有一个项目,左和右)

def prune(t,k):
    if not t:
        return None
    if k < t.item
        while t.item > k:
            t = t.left
    return t

我认为我这样做完全错了..也许有一些简单的递归方式可以做到这一点?

1 个答案:

答案 0 :(得分:0)

我想你想要这样的东西:

def prune(t, k):
    if t is None or t.item > k:
        return None
    t.right = prune(t.right, k)
    return t

这是递归的,并将&#34;修剪&#34;当它到达任何None节点或大于k的节点时。由于这是BST,t.item <= k表示t.left中的所有节点也是如此,因此我们可以忽略它们。