我正在尝试解决以下问题:
返回修改为仅包含值< = k的二叉搜索树的根。 (使用正常的BST类,我们有一个项目,左和右)
def prune(t,k):
if not t:
return None
if k < t.item
while t.item > k:
t = t.left
return t
我认为我这样做完全错了..也许有一些简单的递归方式可以做到这一点?
答案 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
中的所有节点也是如此,因此我们可以忽略它们。