Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def to_list(root):
- # funkcja jest rekurencyjna i zatrzymuje sie dla danej gałęzi gdy root jest None
- if root is not None:
- # te odpowiednie funkcje się nie wykonają gdy root.left albo .right bedzie None
- to_list(root.left)
- to_list(root.right)
- # patrzymy na lewa galez od roota
- if root.left is not None:
- # i dajemy to jako zmienna tmp
- tmp = root.left
- # szukamy elementu najbardziej po prawej od tmp (najwiekszego od tmp)
- while tmp.right is not None:
- tmp = tmp.right
- # i podstawiamy za niego cala galez glownego roota
- tmp.right = root.right
- # a za cala prawa galez glownego roota dajemy ta lewa galez ktora wlasnie zmienilismy (dodalismy na jej koncu prawa galez roota)
- root.right = root.left
- # za lewa galez roota dajemy None
- root.left = None
- # tym sposobem glowny root nie ma nic po lewej, a po prawej ma to co bylo po lewej + to co bylo po prawej na koncu
- # te wczesniejsze funkcje rekurencyjne sluza do tego, by w taki sam sposob poprzerzucac wszystko w mniejszych galeziach, a w tym glownym wywolaniu funkcji tak naprawde laczymy tylko dwie juz "wyplaszczone" galezie
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement