如何运行BST树功能的高度

Surinder Kumar

有人可以帮我吗?我在python中实现了二进制搜索树数据结构,并编写了BST_height()函数来计算树的高度。但是,当我运行我的代码时,它给我一个错误,提示“未定义自我”。我知道为什么会出现错误,但是您能建议其他方法来用根节点运行BST_height函数吗?

class Node:

    def __init__(self, data=None):
        self.data = data
        self.left = None
        self.right = None 

class BinarySearchTree:

    def __init__(self):
        self.root = Node()

    def display(self):

        print('''
                {}
              /   \\
             {}    {}
            / \\   / \\
          {}   {} {} {}  

           BINARY TREE         
        '''.format(tree.root.data, tree.root.left.data, tree.root.right.data, tree.root.left.left.data, tree.root.right.right.data, tree.root.left.right.data, tree.root.right.left.data))

    def checkRoot(self):

        if self.root.data != None:
            return 'Root node exists'
        else:
            return 'Root node doesn\'t exists'    

    def insert(self, data):
        newNode = Node(data)

        if self.root.data == None:
            # creating the root node 
            self.root = newNode
        else:
            self.insertNode(data, self.root)

    def insertNode(self, data, curNode):

        if data < curNode.data:
            if curNode.left == None:
                curNode.left = Node(data)
            else:
                self.insertNode(data, curNode.left)

        elif data > curNode.data:
            if curNode.right == None:
                curNode.right = Node(data)
            else:
                self.insertNode(data, curNode.right)

        else:
            print('The value already exists ha ha')# funny 

    def BST_height(self, node):                     

        if node == None:
            return -1

        leftHeight = height(node.left)
        rightHeight = height(node.right)

        return max(leftHeight, rightHeight) + 1 



tree = BinarySearchTree()
tree.insert(30)# root node 
tree.insert(24)
tree.insert(45)
tree.insert(90)
tree.insert(18)
tree.insert(28)
tree.insert(40)
tree.display()

# getting an error here
# I know self.root can\'t be used outside the class but can you suggest some other way tree.BST_height(self.root)

朋友

该代码有2个问题:

  1. 自我是您在类函数中使用的东西。在外面,您可以简单地使用object变量。像这样:
tree.BST_height(tree.root)
  1. BST_height函数中有一个小错误。它调用height而不是self.BST_height
def BST_height(self, node):
    if node == None:
        return -1

    leftHeight = self.BST_height(node.left)
    rightHeight = self.BST_height(node.right)

    return max(leftHeight, rightHeight) + 1

您可能需要阅读此内容,以使整个self主题更加清晰

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

堆树高度vs BST高度

来自分类Dev

BST的红黑树和高度属性

来自分类Dev

如何检查树是否是BST?

来自分类Dev

如何计算树的高度

来自分类Dev

BST树运行时间

来自分类Dev

如何获得BB [α]树的高度

来自分类Dev

如何获得BB [α]树的高度

来自分类Dev

此功能如何工作?(BST递归)

来自分类Dev

如何递归地找到特里树的高度

来自分类Dev

如何检查二叉树是否是BST?

来自分类Dev

找不到BST的高度

来自分类Dev

如何运行功能加快

来自分类Dev

如何在C中找到特里树的高度

来自分类Dev

如何数学推导此递归树的叶的高度和数量

来自分类Dev

getHeight如何递归确定二叉树的高度?

来自分类Dev

如何获得带有spacy的依赖树的高度?

来自分类Dev

如何找到二叉搜索树的最大高度?

来自分类Dev

如何在C中找到三叉树的高度

来自分类Dev

继承和AVL / BST树

来自分类Dev

Java中的树(bst,maxHeap)

来自分类Dev

序言-要列出的bst树

来自分类Dev

BST树搜索简单的leetcode

来自分类Dev

如何运行这棵树的所有组合

来自分类Dev

如何运行这棵树的所有组合

来自分类Dev

BST(二进制搜索树)元素过滤器功能不断遇到“ NoneType”对象

来自分类Dev

玫瑰树Haskell的高度

来自分类Dev

高度平衡的树-改进

来自分类Dev

计算树的高度-Java

来自分类Dev

如何在树中找到右侧孩子的高度减去左侧孩子的高度