Upute korak po korak od čvora binarnog stabla do drugog LeetCode rješenja

Izjava o problemu: upute korak po korak od čvora binarnog stabla do drugog LeetCode rješenja – dan vam je korijen binarnog stabla s n čvorova. Svakom čvoru je jedinstveno dodijeljena vrijednost od 1 do n. Također vam je dan integer startValue koji predstavlja vrijednost početnog čvora s, i drugačiji integer destValue koji predstavlja vrijednost odredišta...

Čitaj više

Prolazak okomitog reda binarnog stabla LeetCode rješenja

Izjava o problemu Prolazak okomitog reda binarnog stabla LeetCode Solution kaže – S obzirom na korijen binarnog stabla, izračunajte obilazak okomitog reda binarnog stabla. Za svaki čvor na poziciji (redak, stupac), njegova lijeva i desna djeca bit će na pozicijama (redak + 1, stupac – 1) odnosno (redak + 1, stupac + 1). …

Čitaj više

Zbroj korijena prema brojevima lista LeetCode rješenje

Izjava problema Zbroj korijena do brojeva listova LeetCode Rješenje kaže – Dat vam je korijen binarnog stabla koje sadrži samo znamenke od 0 do 9. Svaki put od korijena do lista u stablu predstavlja broj. Na primjer, put od korijena do lista 1 -> 2 -> 3 predstavlja broj 123. Vrati ukupan zbroj svih brojeva od korijena do lista. Test…

Čitaj više

Binarno stablo Inorder Traversal LeetCode Rješenje

Izjava problema: Binarno stablo Inorder Traversal LeetCode rješenje S obzirom na korijen binarnog stabla, vratite prijelaz u neredovnom redu vrijednosti njegovih čvorova. Primjer 1: Ulaz: korijen = [1,null,2,3] Izlaz: [1,3,2] Primjer 2: Ulaz: korijen = [] Izlaz: [] Primjer 3: Ulaz: korijen = [1] Izlaz: [1] Ograničenja: broj čvorova u…

Čitaj više

Poravnajte binarno stablo na povezani popis LeetCode rješenje

Poravnajte binarno stablo na povezani popis LeetCode rješenje kaže da – S obzirom na root binarnog stabla, poravnajte stablo u "povezani popis":

  • "Povezani popis" trebao bi koristiti isto TreeNode razred gdje se right dijete pokazivač pokazuje na sljedeći čvor na popisu i left dječji pokazivač je uvijek null.
  • "Povezani popis" trebao bi biti istim redoslijedom kao a unaprijed naručiti prijelaz binarnog stabla.

 

Primjer 1:

Poravnajte binarno stablo na povezani popis LeetCode rješenjeUlazni:

 root = [1,2,5,3,4,null,6]

Izlaz:

 [1,null,2,null,3,null,4,null,5,null,6]

Primjer 2:

Ulazni:

 root = []

Izlaz:

 []

Primjer 3:

Ulazni:

 root = [0]

Izlaz:

 [0]

 

ALGORITAM –

IDEJA –

  • Kako bismo izravnali binarno stablo, prvo ćemo pronaći krajnji desni element lijevog podstabla, a nakon što dobijemo krajnji desni element povezat ćemo desni pokazivač tog čvora s desnim podstablom danog stabla.
  • U koraku 2 povezat ćemo desni pokazivač korijenskog čvora s lijevim podstablom i postaviti lijevo podstablo kao null.
  • U koraku 3 sada je naš korijenski čvor čvor desnog podstabla, isti proces će se dogoditi s ovim čvorom i proces će se nastaviti sve dok svi lijevi dijelovi ne postanu nulti.

Pristup za izravnavanje binarnog stabla na povezanu listu Leetcode rješenje –

– Prvo ću pokrenuti petlju, tj. while(root != null), a zatim ću uzeti dvije varijable i pohraniti lijevo podstablo.

– zatim će provjeriti krajnji desni čvor lijevog podstabla korištenjem while(k.left != null) i povezati taj čvor s desnim podstablom koristeći (k.right = root.right).

– zatim povežite desni pokazivač korijenskog čvora s lijevim podstablom (root.right = lijevo) i postavite lijevi pokazivač korijenskog čvora kao null(root.left=null) i ažurirat će se za ( root = root.right ) tako da je sada root udesno čvor podstabla.

– ovaj proces će se nastaviti sve dok svi dijelovi lijevog podstabla ne postanu desno podstablo. Dakle, binarno stablo će se spljoštiti.

 

Poravnajte binarno stablo na povezani popis LeetCode rješenje

Poravnajte binarno stablo na povezani popis LeetCode rješenje

Python rješenje:

class Solution:
    def flatten(self, root: Optional[TreeNode]) -> None:
        while(root):
            
            if root.left:
                
                k = root.left
                temp = root.left
            
            
                while(k.right):
                    k = k.right
            
                k.right = root.right
            
                root.right = temp
            
                root.left = None
            
            root = root.right

Java rješenje:

class Solution {
    public void flatten(TreeNode root) {       
        while (root != null) {
            if (root.left != null) {
                TreeNode k = root.left;
                TreeNode temp = root.left;
                while (k.right != null) k = k.right;
                k.right = root.right;
                root.right = temp;
                root.left = null;
            }
            root = root.right;
        }
    }
}

Vremenska složenost: O(N)

Složenost prostora: O (1)

Kako smo prošli samo jednom, složenost vremena bit će o(n).

a kako nismo uzeli nikakav dodatni prostor, složenost prostora bit će o(1) konstantni dodatni prostor.

Slično pitanje - https://www.tutorialcup.com/interview/linked-list/flattening-linked-list.htm

Najniži zajednički predak rješenja Leetcode binarnog stabla

Izjava problema Najniži zajednički predak binarnog stabla LeetCode rješenje – “Najniži zajednički predak binarnog stabla” navodi da se daje korijen binarnog stabla i dva čvora stabla. Moramo pronaći najnižeg zajedničkog pretka ova dva čvora. Najniži uobičajeni…

Čitaj više

Popunjavanje sljedećih desnih pokazivača u rješenju svakog čvora Leetcode

Izjava problema Popunjavanje sljedećih desnih pokazivača u svakom čvoru Rješenje LeetCode – “Popunjavanje sljedećih desnih pokazivača u svakom čvoru” navodi da je s obzirom na korijen savršenog binarnog stabla potrebno popuniti svaki sljedeći pokazivač čvora na njegov sljedeći desni čvor. Ako nema sljedećeg…

Čitaj više

Izbrišite čvorove i vratite Forest Leetcode rješenje

Izjava o problemu Brisanje čvorova i vraćanje šume LeetCode Rješenje – “Izbriši čvorove i vrati šumu” navodi da je s obzirom na korijen binarnog stabla gdje svaki čvor ima različitu vrijednost. Također nam je dat niz, to_delete, gdje trebamo izbrisati sve čvorove s vrijednostima sadržanim u…

Čitaj više

Oporavak binarnog stabla pretraživanja Leetcode rješenje

Izjava o problemu Recover Binary Search Tree LeetCode Rješenje – “Oporavak binarnog stabla pretraživanja” navodi da je s obzirom na korijen binarnog stabla pretraživanja, gdje su vrijednosti točno dva čvora zamijenjene greškom. Moramo oporaviti stablo bez promjene njegove strukture. Primjer: Ulaz: korijen = [1,3,null,null,2] Izlaz: [3,1,null,null,2] …

Čitaj više

Translate »