二叉搜索树的最大值

时间:2015-05-11 04:55:12

标签: python binary-tree binary-search-tree

我试图在二叉搜索树中找到最大值。下面给出了示例解决方案,但我试图了解我的解决方案是否有任何问题?我对样本解决方案的问题在于,它似乎检查每个节点是否都不是None两次:一次进入"如果不是current.right" "当前... current = current.right",这似乎是多余的。

样本解决方案:

      def find_largest(root_node):
        current = root_node
        while current:
            if not current.right:
                return current.value
            current = current.right

我的解决方案:

      def find_largest(root_node):
        current = root_node
        if current:
            while current.right is not None:
                current = current.right
            return current.value

问题/代码来源:Interviewcake.com

1 个答案:

答案 0 :(得分:2)

您的分析是正确的,示例解决方案为每个节点检查None两次,并且您的解决方案只检查一次,否则它们是等效的。我还说你的解决方案更具可读性,但这有点主观。

作为一项增强功能,您可以通过调用函数current而不是root_node的参数来摆脱函数体中的第一行。它为您提供了额外的好处,因为现在参数名称并不表示只能使用 root 节点作为参数调用您的函数。实际上,它正确地找到了任何子树中的最大值。