Вычислить сумму BST в диапазоне

#python-3.x #binary-tree #binary-search-tree

#python-3.x #двоичное дерево #двоичное дерево поиска

Вопрос:

Кто-нибудь может сказать мне, что не так с моим кодом. Его возврат 25 для testcase С учетом корневого узла двоичного дерева поиска возвращает сумму значений всех узлов со значением от L до R (включительно).

Бинарное дерево поиска гарантированно будет иметь уникальные значения. Входные данные: root = [10,5,15,3,7, null, 18], L = 7, R = 15 Выходные данные: 32 Мои выходные данные: 25

 class Solution:
    def rangeSumBST(self, root: TreeNode, L: int, R: int) -> int:
        self.sum1=0
        self.traverse(root,L,R)
        return self.sum1
    def traverse(self,node,L,R):
        if node:
            if L<=node.val<=R:
                self.sum1 =node.val
                if L<node.val:
                    self.traverse(node.left,L,R)
                if node.val<R:
                    self.traverse(node.right,L,R)
  

Ответ №1:

Вы вызываете left child и right child только тогда, когда текущее значение node.value находится между диапазоном l и r . Вы должны вызывать их, даже если node.value значения не лежат между l и r .

Поэтому измените indentation количество if блоков внутри traverse() метода.
проверьте приведенный ниже код.

 class Solution:
    def rangeSumBST(self, root: TreeNode, L: int, R: int) -> int:
        self.sum1=0
        self.traverse(root,L,R)
        return self.sum1
    def traverse(self,node,L,R):
        if node:
            if L<=node.val<=R:
                self.sum1 =node.val
            if L<node.val:
                self.traverse(node.left,L,R)
            if node.val<R:
                self.traverse(node.right,L,R)
  

Комментарии:

1. о Да! Спасибо, что помогли мне

2. @pruthvikreddyElemati пожалуйста, примите ответ, если это решит вашу проблему.

3. Готово! Спасибо за вашу помощь