我想知道如何在二叉搜索树中打印最小的k值。我很难停止这种方法
代码:
def kthSmallestBST(node,k, count):
if node == None or count == k:
return
else:
kthSmallestBST(node.left, k, count)
count += 1
print node.data
kthSmallestBST(node.right, k, count)
count += 1
kthSmallestBST(BST, 3, 0)
目前我的输出只是按顺序打印整棵树
对
count
值的更改不会传播回调用者。您需要返回新计数:还要注意,您不需要同时使用}。您可以去掉},并将{}与0进行比较(而不是与
^{pr2}$k
和{count
,减量k
,而不是递增{count
)。你得到的是:您需要稍微改变一下,以便知道在递归调用期间找到了多少元素。让函数返回它找到的元素数,然后将它们相加。还需要检查递归调用和当前节点元素之间的计数。在
比如:
这是一个相当“函数式编程”的解决方案,但有一种方法是(懒洋洋地)按顺序生成树中的节点,然后使用itertools只获取第一个k
如果您使用的是python3,那么可以使用“yield from”来缩短这个解决方案。在
相关问题 更多 >
编程相关推荐