【问题标题】:How do I implement a search function in Binary Search Tree using Python?如何使用 Python 在二叉搜索树中实现搜索功能?
【发布时间】:2017-12-06 12:35:08
【问题描述】:

函数 searchNode 不能正常工作。搜索二叉树中的元素时,它返回 None 而不是 True。我不明白为什么它是 None,因为它应该返回 True 或 False,但永远不会返回 None。你能告诉我如何解决它吗?

class Node:
def __init__(self, value):
    self.value = value
    self.left = None
    self.right = None

class BinarySearchTree:
def __init__(self):
    self.root = None
    self.visited = 0

def insert(self,value):
    if self.root is None:
        self.root =  Node(value)
    else:
        self.insertNode(self.root, value)

def insertNode(self,current, value):
    if value <= current.value:
        if  current.left:
            self.insertNode(current.left, value)
        else:
            current.left = Node(value)
    else:
        if current.right:
            self.insertNode(current.right, value)
        else:
            current.right = Node(value)

def fromArray(self, newarr):
    for each in newarr:
        self.insert(each)
    return

def search(self, value):
    self.visited = 0
    self.searchNode(self.root, value)

def searchNode(self,current,value):
    if (current is None):
        return False
    elif (value == current.value):
        return True
    elif (value < current.value):
        self.visited += 1
        return self.searchNode(current.left, value)
    else:
        self.visited += 1
        return self.searchNode(current.right, value)

【问题讨论】:

  • 你是如何调用这个方法并评估结果的?
  • 粘贴您的代码而不是屏幕截图。
  • 请在您的帖子中复制粘贴您的代码(注意缩进)。

标签: python python-3.x binary-search-tree


【解决方案1】:

您永远不会在search 中返回任何内容。您可能想return self.searchNode(self.root, value) 而不仅仅是调用它。

【讨论】:

  • 谢谢!它现在工作正常。我在搜索功能中添加了返回
猜你喜欢
  • 2019-02-20
  • 2020-11-07
  • 1970-01-01
  • 2022-11-15
  • 1970-01-01
  • 2021-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多