【问题标题】:Array To Binary Search Tree数组到二叉搜索树
【发布时间】:2014-06-22 17:51:11
【问题描述】:

我需要在 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: 名称 'arrayToBST' 未定义

我没有看到错误。请帮忙,谢谢!

【问题讨论】:

  • arrayToBST 是一个类的成员。您需要从此类的一个实例中调用它
  • BST 类的对象在哪里?
  • 尝试使用:BST().arrayToBST(seq)

标签: python arrays binary-search-tree


【解决方案1】:

在您的递归调用中,您正在调用实例的arrayToBST 方法。因此,您需要致电self.arrayToBST 而不仅仅是arryToBSTself 的全部意义在于让您访问实例上的属性。

您还应该创建一个实例并在主部分中调用该实例的 arrayToBST 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2018-09-19
    相关资源
    最近更新 更多