二叉搜索树最大值

Binary search tree largest value

我试图在二叉搜索树中找到最大值。下面给出了示例解决方案,但我想了解我的解决方案是否有问题?我对示例解决方案的问题是,它似乎检查每个节点是否不是 None 两次:一次在 "if not current.right" 中,第二次在 "while current ... 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

Question/Code 来源:Interviewcake.com

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

作为增强功能,您可以通过调用函数的参数 current 而不是 root_node 来删除函数主体中的第一行。它给你一个额外的好处,因为现在参数名称并不建议你的函数只能用 root 节点作为参数来调用。事实上,它正确地找到了任何子树中的最大值。