我正在尝试解决以下问题:
返回修改为仅包含值<=的二进制搜索树t的根k.(使用正常的BST类,其中我们有一个项目,左和右)
def prune(t,k):
if not t:
return None
if k < t.item
while t.item > k:
t = t.left
return t
我认为我做得完全不对。。也许有一些简单的递归方法可以做到这一点?
我想你想要这样的东西:
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 <= k
意味着t.left
中的所有节点也将是,所以我们可以忽略它们。