我需要在python中创建一个从数组创建BST的函数。该数组已经排序。
示例是:
function array_to_binary_search_tree(array, start, end)
if start > end
Return an empty value
mid := int((start + end) / 2)
tree := BinaryTree()
tree.node := array[mid]
tree.left := array_to_binary_search_tree(array, start, mid - 1)
tree.right := array_to_binary_search_tree(array, mid + 1, end)
Return 'tree'
我有这个:
class BST:
def __init__(self,tree,info):
self.right = None
self.left = None
self.info = info
def arrayToBST(seq):
if (seq == []):
return None
mid = ((len(seq)) // 2)
tree = BST(seq[mid])
tree.left = arrayToBST(seq[0:mid])
tree.right = arrayToBST(seq[mid+1:])
return tree
if __name__ == "__main__":
seq = [1,2,3,4,5,6,7,8,9]
arrayToBST(seq)
结果是:
NameError:name' arrayToBST'未定义
我没有看到错误。请帮忙,谢谢!
答案 0 :(得分:1)
在递归调用中,您正在调用实例的arrayToBST
方法。因此,您需要致电self.arrayToBST
而不仅仅是arryToBST
。 self
的全部内容是让您访问实例上的属性。
您还应该创建一个实例,并在主要部分中调用该实例的arrayToBST
方法。