如何修复“未定义全局名称错误”

2024-10-01 17:37:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了两个类,一个用于节点对象,另一个用于BST(二进制搜索树对象)。对于二叉搜索树,我实现了两种方法,一种用于将给定值(new_val)插入树中的正确位置,另一种用于在BST中搜索具有给定值的节点。为了实现这些函数,我创建了helper函数(即insertRecursive和searchRecursive),它们递归地工作以实现函数目标。出于某种原因,当我运行代码时,我得到了错误“namererror:global name'insert\u Recursive'未定义”,我不确定原因。任何关于如何解决这个问题的建议都将不胜感激

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

class BST(object):
    def __init__(self, root):
        self.root = Node(root)

def insert(self, new_val):
    self.insert_Recursive(self.root, new_val)

def insert_Recursive(self, start, new_val):
    if start != None:
        if (new_val > start.value):
            insert_Recursive(start.right, new_val)
        else:
            insert_Recursive(start.left, new_val)
    else:
        start.value = new_val


def search(self, find_val):
    return searchRecursive(self.root, find_val)

def searchRecursive(self, start, find_val):
    if start != None:
        if (find_val == start.value):
            return True
        elif(find_val > start.value):
            searchRecursive(start.right, find_val)
        else:
            searchRecursive(start.left, find_val)
    else:
        return False

tree = BST(4)
tree.insert(2)
tree.insert(1)
tree.insert(3)
tree.insert(5)
print tree.search(4)
print tree.search(6)

Tags: selfnonetreenewifvaluedefval

热门问题