无法理解此Python代码中的tree.value

2024-04-28 07:47:32 发布

您现在位置:Python中文网/ 问答频道 /正文

这是Python中leet代码问题270(在BST中查找最接近的值)的答案。我无法理解这段代码中的tree.value是什么以及如何工作的

def findClosestValueInBst(tree, target):
    return findClosestValueInBstHelper(tree, target, closest)

def findClosestValueInBstHelper(tree, target, closest):
    if tree is None:
       return Closest
    if abs(target - closest) > abs(target - tree.value):
       closest = tree.value
    if target < tree.value:
       return findClosestValueInBstHelper(tree.left, target, closest)
    elif target > tree.vlaue:
       return findClosestValueInBstHelper(tree.right, target, closest)
    else:
       return closest

Tags: 答案代码treetargetreturnifisvalue
1条回答
网友
1楼 · 发布于 2024-04-28 07:47:32

有一个由LeetCode定义的TreeNode类,您不必将其添加到解决方案中:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

这将通过:

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def closestValue(self, root, target):
        a_value = root.val
        child = root.left if target < a_value else root.right
        if not child: 
            return a_value
        b_value = self.closestValue(child, target)
        return min((b_value, a_value), key=lambda x: abs(target - x))

而且,没有tree.value,我想应该是tree.val


参考资料

  • 有关更多详细信息,请参见Discussion Board。有许多公认的解决方案,其中包括各种languages和解释、有效算法以及渐近time/space复杂性分析12

相关问题 更多 >