Verflaacht Binärbaum op Linked List LeetCode Solution seet, datt - Ginn der root
vun engem binäre Bam, flaach de Bam an eng "verlinkt Lëscht":
- Déi "verlinkt Lëscht" soll déi selwecht benotzen
TreeNode
Klass wou deright
Kand Pointer weist op déi nächst Node an der Lëscht an derleft
Kand Pointer ass ëmmernull
. - Déi "verlinkt Lëscht" soll an der selwechter Uerdnung sinn wéi eng viirbestellen Duerchgäng vum binäre Bam.
Beispill 1:
Input:
root = [1,2,5,3,4,null,6]
Ausgab:
[1,null,2,null,3,null,4,null,5,null,6]
Beispill 2:
Input:
root = []
Ausgab:
[]
Beispill 3:
Input:
root = [0]
Ausgab:
[0]
ALGORITHME -
IDEE -
- Fir e binäre Bam ze flaach ze fannen, fanne mir als éischt dat rietst Element vum lénksen Ënnerbaum an nodeems mir dat rietsst Element kritt hunn, verbannen mir de richtege Pointer vun deem Node mat engem richtege Subtree vun engem bestëmmte Bam.
- Am Schrëtt 2 verbannen mir de richtege Pointer vum Root Node mat dem lénksen Subtree a setzen de lénksen Subtree als Null.
- Am Schrëtt 3 ass eise Root Node e richtege Subtree Node, dee selwechte Prozess wäert mat dësem Node geschéien an de Prozess wäert nach ëmmer weidergoen bis all déi lénks Deeler null ginn.
Approche fir Flaach Binäre Bam zu Linked List Leetcode Léisung -
- Fir d'éischt lafen ech eng Loop dh während (root != null) dann huelen ech zwou Variabelen a späicheren de lénksen Subtree.
- da kontrolléiert d'Check fir de rietsste Node vum lénksen Ënnerbaum andeems Dir while (k.left != null) benotzt a verbënnt dee Knuet mam richtege Subtree benotzt (k.right = root.right).
- dann verlinkt de richtege Pointer vum Root Node mam lénksen Subtree (root.right = lénks) a setzt de lénksen Pointer vum Root Node als null (root.left = null) a wäert aktualiséieren duerch (root = root.right) sou datt elo root richteg ass subtree Node.
- Dëse Prozess wäert weidergoen bis all lénks-Subtree Deeler riets subtree ginn. Dofir gëtt de binäre Bam flaach.
Python Léisung:
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 Léisung:
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; } } }
Zäitkomplexitéit: O(N)
Raumkomplexitéit: O (1)
Wéi mir nëmmen eemol duerchgestrachenem hunn, Zäit Komplexitéit wäert o (n).
a wéi mir keng extra Plaz geholl hunn, wäert Raum Komplexitéit o (1) konstant extra Plaz.
Ähnlech Fro - https://www.tutorialcup.com/interview/linked-list/flattening-linked-list.htm