Python 获取二叉搜索树的高度

Python 获取二叉搜索树的高度,python,Python,我是Python的新手,我有一些问题。我正在使用Python 3 我对二叉搜索树使用了这个逻辑来获得它的高度: class Node: def __init__(self, data): self.right = self.left = None self.data = data class Solution: def insert(self, root, data): if root is None:

我是Python的新手,我有一些问题。我正在使用Python 3

我对二叉搜索树使用了这个逻辑来获得它的高度:

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


class Solution:
    def insert(self, root, data):
        if root is None:
            return Node(data)
        else:
            if data > root.data:
                cur = self.insert(root.right, data)
                root.right = cur
            else:
                cur = self.insert(root.left, data)
                root.left = cur
        return root

    def getHeight(self, root):
        # Write your code here
        if root is None:
            return 0
        else:
            return 1 + max(self.getHeight(root.right), self.getHeight(root.left))

T = int(input())
myTree = Solution()
root = None
for i in range(T):
    data = int(input())
    root = myTree.insert(root, data)

height = myTree.getHeight(root)
print(height)
通过此输入:

7
3
5
2
1
4
6
7
第一个7是节点数

但我得到的是四,而不是三,在这个例子中,高度必须是三

我做错了什么


注意:我的代码仅在
getHeight
方法上。

您可以根据插入逻辑绘制树来手动检查答案

level1             3
level2         2       5
level3     1         4   6
level4                     7
如果您正在计算边数,那么是的,它是三个,但树的高度显然是四个


你可以通过
return-1
在基本情况下解决这个措辞拙劣的问题

我认为4是正确的答案。前7是节点数。正如你在这里看到的,高度实际上是4而不是3。看:。这是问题陈述。在这里,他们要计算的是边,而不是节点。边不等于节点height@VansFannel
返回-1
而不是0