【问题标题】:Binary search tree largest value二叉搜索树最大值
【发布时间】:2015-05-11 04:55:11
【问题描述】:

我试图在二叉搜索树中找到最大值。下面给出了示例解决方案,但我试图了解我的解决方案是否有问题?我对示例解决方案的问题是,它似乎检查每个节点是否不是 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

问题/代码来源:Interviewcake.com

【问题讨论】:

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


    【解决方案1】:

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

    作为一项改进,您可以通过调用函数的参数current 而不是root_node 来去掉函数主体中的第一行。它给您带来了额外的好处,因为现在参数名称并不表明您的函数只能使用 root 节点作为参数来调用。事实上,它正确地找到了任何子树中的最大值。

    【讨论】:

    • 他的 if current: 是否有原因?样本没有检查。是的,如果不是,他巩固了一段时间和后续。所以......使用更多内存的更快方法可能是分配最后一个值,然后说 while current.right last=current.right 最后返回。嗯?
    • @joshstrike 当然是有原因的。如果root_nodeNone 会发生什么(也就是说,我们得到一棵空树)?
    • @joshstrike 标注或称呼名字不好。
    • @joshstrike 看看这个网站,这里有礼貌的助手。
    • @PeterWood 感谢您努力使本网站成为一个有礼貌的地方!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2011-03-10
    相关资源
    最近更新 更多