【发布时间】:2014-02-06 04:40:15
【问题描述】:
我要解决的问题是在 BST 的中序遍历中找到第一个出现的节点。 我的代码如下所示
def Inorder_search_recursive(node,key):
if not node:
return None
InOrder_search_recursive(node.lChild)
if node.value==key:
return node
InOrder_search_recursive(node.rChild)
这段代码总是返回 None,这有什么问题。当我找到一个值为 k 的节点时,我想我已经返回了节点。为什么python不能通过这个节点???提前谢谢
【问题讨论】:
-
如果这是一棵二叉搜索树,那么使用实际的二叉搜索而不是顺序搜索可能会得到更好的结果。
-
是的,你是对的,我刚刚想通了,我们可以先用 value 键定位那个值。我们可以使用 BST 的属性来节省大量时间。然后搜索它的左子树。如果它的左子树也有一个带有 value 键的节点,则立即返回。
标签: python recursion data-structures binary-search-tree inorder