#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. Готово! Спасибо за вашу помощь