我试图在二叉搜索树中找到最大值。下面给出了示例解决方案,但我试图了解我的解决方案是否有任何问题?我对样本解决方案的问题在于,它似乎检查每个节点是否都不是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
答案 0 :(得分:2)
您的分析是正确的,示例解决方案为每个节点检查None
两次,并且您的解决方案只检查一次,否则它们是等效的。我还说你的解决方案更具可读性,但这有点主观。
作为一项增强功能,您可以通过调用函数current
而不是root_node
的参数来摆脱函数体中的第一行。它为您提供了额外的好处,因为现在参数名称并不表示只能使用 root 节点作为参数调用您的函数。实际上,它正确地找到了任何子树中的最大值。