• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Odwolanie się do korzenia drzewa binarnego

VPS Starter Arubacloud
0 głosów
125 wizyt
pytanie zadane 28 kwietnia 2020 w Algorytmy przez wojtek_suchy Mądrala (6,880 p.)

Witam,

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

class Solution:
    def insertIntoBST(self, root: TreeNode, val: int) -> TreeNode:
        x = root
        n = None
        while True:
            if root.left == root.right == None:
                n = root
                break
            if root.val < val:
                if root.right == None:
                    n = root
                    break
                root = root.right
            if root.val > val:
                if root.left == None:
                    n = root
                    break
                root = root.left
        if n.val > val:
            n.left = TreeNode(val)
            return root
        n.right = TreeNode(val)
        return x

Rozwiązuje zadanie na LeetCode, do BST trzeba dodać element, mój algorytm wygląda tak:

niestety zmienna 'x' nie wskazuje na korzeń drzewa tylko na miejsce które znalazłem. Czy mógłbym stworzyć "wskaźnik" na korzeń drzewa ?

Link do zadania LINK

Dzięki za pomoc :)

1 odpowiedź

0 głosów
odpowiedź 2 maja 2020 przez Jarrow234 Obywatel (1,060 p.)
wybrane 3 maja 2020 przez wojtek_suchy
 
Najlepsza
Zmienna x cały czas wskazuje na korzeń drzewa. Problem tkwi w linii 28, gdzie zwracasz root zamiast x, który rzeczywiście wskazuje na znaleziony węzeł drzewa. Polecam na przyszłość używanie bardziej znaczących nazw zmiennych. np. w zmiennej root mógłby zostać korzeń drzewa, zmienną w której trzymasz obecnie rozpatrywany wierzchołek drzewa można nazwać current_node(na pewno można ją nazwać lepiej, ale ta nazwa już coś mówi). Wtedy łatwiej uniknąć takich błędów albo zauważyć, że niektóre zmienne są niepotrzebne(np. zmienna n).
komentarz 3 maja 2020 przez wojtek_suchy Mądrala (6,880 p.)
Dziękuje bardzo za odpowiedź !

Podobne pytania

0 głosów
0 odpowiedzi 90 wizyt
pytanie zadane 25 maja 2020 w C i C++ przez Daim123 Użytkownik (530 p.)
0 głosów
0 odpowiedzi 346 wizyt
0 głosów
2 odpowiedzi 400 wizyt
pytanie zadane 2 września 2020 w Rozwój zawodowy, nauka, praca przez Panareno Nowicjusz (120 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...