获取二叉搜索树的高度

时间:2017-09-03 09:30:15

标签: 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:
            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方法。

1 个答案:

答案 0 :(得分:1)

您可以根据插入逻辑

绘制树来手动检查答案
level1             3
level2         2       5
level3     1         4   6
level4                     7

如果你计算边缘,那么是,它是三,但树的高度显然是四。

您可以在基本情况下return -1来解决措辞不佳的问题