Не могу понять tree.value в этом коде Python - PullRequest
1 голос
/ 09 июля 2020

Это ответ на вопрос 270 кода leet (Найти ближайшее значение в BST) в Python. Я не мог asp понять, что и как работает 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

1 Ответ

1 голос
/ 09 июля 2020

Существует класс для TreeNode, который определяется LeetCode, и вам не нужно добавлять его в Решение:

# 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 Я думаю.

Ссылки

...