【问题标题】:Deleting Parts of Binary Search Tree删除部分二叉搜索树
【发布时间】:2014-04-15 22:36:30
【问题描述】:

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

返回二叉搜索树的根 t 修改为仅包含值

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

我认为我做错了。也许有一些简单的递归方法可以做到这一点?

【问题讨论】:

    标签: python recursion tree search-tree


    【解决方案1】:

    我想你想要这样的东西:

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

    这是递归的,当它到达任何None 节点或大于k 的节点时将“修剪”。由于这是一个 BST,t.item &lt;= k 意味着t.left 中的所有节点也会如此,所以我们可以忽略它们。

    【讨论】:

    • 这不起作用,因为如果我修剪一个较小的节点,它是左子树的一部分,该函数将什么也不做。例如 BTNode(7, BTNode(4, BTNode(3, None, None), None), BTNode(10, None, None)) ,如果我选择 5,它将保持不变,因为该值不在右子树中。
    • @Mac 如果你选择k=5,你将不会得到任何回报,就像7 &gt; 5!你真的试过了吗?
    猜你喜欢
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    相关资源
    最近更新 更多