数组到二进制搜索树

时间:2014-06-22 17:51:12

标签: python arrays binary-search-tree

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

    
  

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

1 个答案:

答案 0 :(得分:1)

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

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