Flettu tvöfalda tré við tengda lista LeetCode lausn

Flettu tvöfalda tré við tengda lista LeetCode lausn segir að - Í ljósi þess root af tvíundartré, flettu tréð út í „tengdan lista“:

  • „Tengdi listinn“ ætti að nota það sama TreeNode bekk þar sem right barnabendill bendir á næsta hnút á listanum og left barn bendill er alltaf null.
  • „Tengdi listinn“ ætti að vera í sömu röð og a Pre-röð yfirferð af tvíundartrénu.

 

Dæmi 1:

Flettu tvöfalda tré við tengda lista LeetCode lausninntak:

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

Output:

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

Dæmi 2:

inntak:

 root = []

Output:

 []

Dæmi 3:

inntak:

 root = [0]

Output:

 [0]

 

ALGÓRITIMA -

HUGMYND -

  • Til þess að fletja út tvöfalda tré, finnum við fyrst hægra megin í vinstra undirtrénu og eftir að við höfum náð hæsta stakinu munum við tengja hægri bendilinn þess hnúts við hægri undirtré tiltekins trés.
  • Í skrefi 2 munum við tengja hægri bendilinn á rótarhnútnum við vinstri undirtréð og stilla vinstri undirtréð sem núll.
  • Í skrefi 3 er nú rótarhnúturinn okkar hægri undirtréshnútur, sama ferli mun gerast með þessum hnút og ferlið heldur áfram þar til allir vinstri hlutar verða að engu.

Aðferð til að fletja tvöfalda tré við Leetcode lausn á tengdum lista -

– Í fyrstu mun ég keyra lykkju þ.e. while(rót != null) þá mun ég taka tvær breytur og geyma vinstri undirtréð.

– mun þá athuga hvort hnúturinn sé lengst til hægri í vinstri undirtré með því að nota while(k.left != null) og mun tengja þann hnút við hægri undirtré með því að nota (k.right = root.right).

– tengdu síðan hægri bendilinn á rótarhnút við vinstri undirtré (root.right = vinstri) og stilltu vinstri bendilinn á rótarhnút sem null(root.left=null) og mun uppfæra með (rót = root.right ) þannig að nú er rót rétt undirtré hnút.

– þetta ferli mun halda áfram þar til allir vinstri undirtré hlutar verða hægri undirtré. Þess vegna mun tvíundartréð fletjast út.

 

Flettu tvöfalda tré við tengda lista LeetCode lausn

Flettu tvöfalda tré við tengda lista LeetCode lausn

Python lausn:

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 lausn:

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;
        }
    }
}

Tímaflæki: O(N)

Rýmisflókið: O (1)

Þar sem við höfum farið aðeins einu sinni yfir verður tímaflækjustigið o(n).

og þar sem við höfum ekki tekið neitt aukapláss verður flókið rými o(1) stöðugt aukarými.

Svipuð spurning - https://www.tutorialcup.com/interview/linked-list/flattening-linked-list.htm

Oddur Jafnvel tengdur listi Leetcode lausn

Vandamálsyfirlýsing Ójafn-jafntengill listi LeetCode Lausnin – „Odda-jafnvel tengd listi“ segir að gefinn sé ótómur eintengdur listi. Við þurfum að flokka alla hnúta með oddavísitölum saman og síðan hnúta með sléttum vísitölum og skila endurraðaða listanum. Athugaðu að hlutfallsleg röð innan bæði ...

Lesa meira

Bæta við Two Numbers II Leetcode lausn

Vandamálayfirlýsing The Add Two Numbers II LeetCode Lausnin – „Add Two Numbers II“ segir að tveir ótómir tengdir listar tákna tvær óneikvæðar heiltölur þar sem mikilvægasti stafurinn kemur fyrst og hver hnút inniheldur nákvæmlega einn tölustaf. Við þurfum að leggja saman tölurnar tvær og skila summan sem …

Lesa meira

LRU Cache Leetcode lausn

Vandamálsyfirlýsing LRU Cache LeetCode Lausnin – „LRU Cache“ biður þig um að hanna gagnaskipulag sem fylgir Least Recently Used (LRU) Cache Við þurfum að innleiða LRUCache flokk sem hefur eftirfarandi aðgerðir: LRUCache(int getu): Frumstillir LRU skyndiminni. með jákvæða stærðargetu. int get(int lykill): Skilaðu gildinu …

Lesa meira

Sameina k flokkaða lista Leetcode lausn

Vandamálsyfirlýsing Sameina k flokkaðir listar LeetCode Lausn – „Sameina k flokkaðir listar“ segir að miðað við fjölda k tengdra lista, þar sem hver tengdur listi hefur gildi sín flokkuð í hækkandi röð. Við þurfum að sameina alla k-tengda lista í einn tengdan lista og skila ...

Lesa meira

Fylltu út næstu hægri vísbendingar í hverri hnút Leetcode lausn

Vandamálsyfirlýsing Byggða næstu hægri bendilinn í hverjum hnút LeetCode lausn - „Að fylla næstu hægri bendina í hverjum hnút“ segir að miðað við rót hins fullkomna tvíundartrés og við þurfum að fylla út hvern næsta bendi hnútsins á næsta hægri hnút sinn. Ef það er ekkert næsta…

Lesa meira

Fjarlægðu Nth Node frá enda lista Leetcode lausn

Vandamálsyfirlýsing Fjarlægja N. hnút úr enda lista Leetcode lausn – segir að þú sért gefinn yfirmaður á tengdum lista og þú þarft að fjarlægja n. hnút af lok þessa lista. Eftir að þessum hnút hefur verið eytt skaltu skila hausnum á breytta listanum. Dæmi: Inntak: …

Lesa meira

Fjarlægðu tengda listaþætti Leetcode lausn

Staðhæfing um vandamál Í þessu vandamáli er okkur gefinn tengdur listi með hnúta hans með heiltölugildi. Við þurfum að eyða nokkrum hnútum af listanum sem hafa gildi jafnt og val. Ekki þarf að leysa vandamálið á sínum stað en við munum ræða eina slíka nálgun. Dæmi Listi = ...

Lesa meira

Palindrome tengdur listi Leetcode lausn

Í vandamálinu „Palindrome Linked List“ verðum við að athuga hvort tiltekinn heildartengdur listi sé palindrome eða ekki. Dæmi Listi = {1 -> 2 -> 3 -> 2 -> 1} satt Skýring # 1: Listinn er palindrome þar sem allir þættir frá upphafi og aftan eru ...

Lesa meira

Translate »