Binarno stablo Inorder Traversal LeetCode rješenje

Iskaz problema: Binarno stablo Inorder Traversal LeetCode rješenje Dati korijen binarnog stabla, vratite prelazak u redoslijedu vrijednosti njegovih čvorova. Primjer 1: Ulaz: root = [1,null,2,3] Izlaz: [1,3,2] Primjer 2: Ulaz: root = [] Izlaz: [] Primjer 3: Ulaz: root = [1] Izlaz: [1] Ograničenja: broj čvorova u…

Čitaj više

Rješenje za minimalnu sumu putanje Leetcode

Najava problema Minimalna suma putanje LeetCode rješenje – “Minimalna suma putanje” kaže da je data anxm mreža koja se sastoji od nenegativnih cijelih brojeva i da moramo pronaći putanju od gornjeg lijevog do donjeg desnog, što minimizira zbir svih brojeva duž putanje . Možemo samo da se krećemo…

Čitaj više

Minimalna cijena penjanja stepenicama LeetCode rješenje

Iskaz problema Minimalni trošak penjanja stepenicama LeetCode Rješenje – Dat je trošak cijelog niza, gdje je trošak[i] trošak i-og koraka na stepeništu. Kada platite troškove, možete se popeti na jednu ili dvije stepenice. Možete početi od koraka sa indeksom 0 ili od koraka sa…

Čitaj više

Poravnajte binarno stablo na povezanu listu LeetCode rješenje

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

  • „Povezana lista“ treba da koristi isto TreeNode razred u kojem je right dijete pokazivač pokazuje na sljedeći čvor na listi i left dijete pokazivač je uvijek null.
  • „Povezana lista“ treba da bude u istom redosledu kao a pred-porudžbina prelazak binarnog stabla.

 

Primer 1:

Poravnajte binarno stablo na povezanu listu LeetCode rješenjeUlaz:

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

Izlaz:

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

Primer 2:

Ulaz:

 root = []

Izlaz:

 []

Primer 3:

Ulaz:

 root = [0]

Izlaz:

 [0]

 

ALGORITAM –

IDEJA –

  • Da 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 sa desnim podstablom datog stabla.
  • U koraku 2 ćemo povezati desni pokazivač korijenskog čvora sa lijevim podstablom i postaviti lijevo podstablo kao null.
  • U koraku 3 sada je naš korijenski čvor čvor desnog podstabla, isti proces će se dogoditi sa 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), zatim ću uzeti dvije varijable i pohraniti lijevo podstablo.

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

– zatim povežite desni pokazivač korijenskog čvora sa 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 povezanu listu LeetCode rješenje

Poravnajte binarno stablo na povezanu listu 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, vremenska složenost će biti o(n).

i kako nismo uzeli nikakav dodatni prostor, kompleksnost prostora će biti o(1) konstantan dodatni prostor.

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

Umetanje Delete GetRandom O(1) Leetcode Solution

Iskaz problema Rešenje Insert Delete GetRandom O(1) LeetCode – “Insert Delete GetRandom O(1)” traži od vas da implementirate ove četiri funkcije u O(1) vremenskoj složenosti. insert(val): Ubacite val u nasumični skup i vratite true ako element u početku nije prisutan u skupu. Vraća false kada…

Čitaj više

LRU Cache Leetcode Rješenje

Izjava o problemu LRU keš LeetCode rješenje – “LRU keš” traži od vas da dizajnirate strukturu podataka koja slijedi najmanje nedavno korištenu (LRU) keš memoriju Moramo implementirati klasu LRUCache koja ima sljedeće funkcije: LRUCache(int kapacitet): Inicijalizira LRU keš memoriju sa pozitivnim kapacitetom veličine. int get(int ključ): Vrati vrijednost…

Čitaj više

Minimalno uklanjanje da biste napravili valjane zagrade LeetCode rješenje

Iskaz problema Minimalno uklanjanje za pravljenje valjanih zagrada LeetCode rješenje – Dat vam je niz s od '(', ')' i mala slova engleska slova. Vaš zadatak je da uklonite minimalni broj zagrada ( '(' ili ')', na bilo kojoj poziciji) tako da rezultirajući niz zagrada bude …

Čitaj više

Najduži podniz bez ponavljanja znakova Leetcode rješenje

Iskaz problema Najduži podniz bez ponavljanja znakova LeetCode rješenje – navodi da je dat niz s. Moramo pronaći najduži podniz bez ponavljanja znakova. Primjer: Ulaz: s = ”abcabcbb” Izlaz: 3 Objašnjenje: Najduži podniz bez znakova koji se ponavljaju je dužine 3. Niz je: “abc”. Ulaz: s = ”bbbbb”…

Čitaj više

Fibonačijev broj LeetCode rješenje

Iskaz problema Fibonačijev broj LeetCode Rješenje – “Fibonačijev broj” navodi da Fibonačijevi brojevi, koji se obično označavaju F(n) formiraju niz, nazvan Fibonačijev niz, tako da je svaki broj zbir dva prethodna, počevši od 0 i 1 To jest, F(0) = 0, F(1) = 1 F(n) = F(n – 1) + F(n …

Čitaj više

Rješenje za hvatanje kišnice Leetcode

Iskaz problema Rešenje LeetCode za zarobljavanje kišne vode – „Zarobljavanje kišnice“ navodi da je dat niz visina koji predstavlja mapu nadmorske visine gde je širina svake trake 1. Moramo pronaći količinu vode zarobljene nakon kiše. Primjer: Ulaz: visina = [0,1,0,2,1,0,1,3,2,1,2,1] Izlaz: 6 Objašnjenje: Provjerite …

Čitaj više

Translate »