. Traversée de vente par correspondance de l'arbre N-aire

WBOY
Libérer: 2024-08-27 08:31:02
original
505 Les gens l'ont consulté

590. Postcommande de l'arbre N-aire Traversa

Difficulté :Facile

Sujets : Pile, arbre, recherche en profondeur

Étant donné la racine d'un arbre n-aire, renvoie le parcours post-ordre des valeurs de ses nœuds.

La sérialisation des entrées Nary-Tree est représentée dans leur parcours par ordre de niveau. Chaque groupe d'enfants est séparé par la valeur nulle (Voir exemples)

Exemple 1 :

. N-ary Tree Postorder Traversa

  • Entrée : racine = [1,null,3,2,4,null,5,6]
  • Sortie : [5,6,3,2,4,1]

Exemple 2 :

. N-ary Tree Postorder Traversa

  • Entrée : racine = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12 , nul, 13, nul, nul, 14]
  • Sortie : [2,6,14,11,7,3,12,8,4,13,9,10,5,1]

Contraintes :

  • Le nombre de nœuds dans l'arborescence est compris entre [0, 1004].
  • -100 <= Node.val <= 1004
  • La hauteur de l'arbre n-aire est inférieure ou égale à 1000.

Suivi : La solution récursive est triviale, pourriez-vous la faire de manière itérative ?

Solution :

Nous pouvons l'aborder à la fois de manière récursive et itérative. Puisque le suivi demande une solution itérative, nous nous concentrerons sur cela. Le parcours post-ordre signifie visiter d'abord les nœuds enfants, puis le nœud parent.

Implémentons cette solution en PHP : 590. Traversée de post-commande de l'arbre N-aire

val = $val;
    }
}

/**
 * @param Node $root
 * @return integer[]
 */
function postorder($root) {
    ...
    ...
    ...
    /**
     * go to ./solution.php
     */
}

// Example 1:
$root1 = new Node(1);
$root1->children = [
    $node3 = new Node(3),
    new Node(2),
    new Node(4)
];
$node3->children = [
    new Node(5),
    new Node(6)
];

print_r(postorder($root1)); // Output: [5, 6, 3, 2, 4, 1]

// Example 2:
$root2 = new Node(1);
$root2->children = [
    new Node(2),
    $node3 = new Node(3),
    $node4 = new Node(4),
    $node5 = new Node(5)
];
$node3->children = [
    $node6 = new Node(6),
    $node7 = new Node(7)
];
$node4->children = [
    $node8 = new Node(8)
];
$node5->children = [
    $node9 = new Node(9),
    $node10 = new Node(10)
];
$node7->children = [
    new Node(11)
];
$node8->children = [
    new Node(12)
];
$node9->children = [
    new Node(13)
];
$node11 = $node7->children[0];
$node11->children = [
    new Node(14)
];

print_r(postorder($root2)); // Output: [2, 6, 14, 11, 7, 3, 12, 8, 4, 13, 9, 10, 5, 1]
?>




Explication:

  1. Initialisation :

    • Créez une pile et poussez le nœud racine dessus.
    • Créez un résultat de tableau vide pour stocker le parcours final de post-commande.
  2. Traversée :

    • Supprimez le nœud de la pile, insérez sa valeur au début du tableau de résultats.
    • Poussez tous ses enfants sur la pile.
    • Continuez jusqu'à ce que la pile soit vide.
  3. Résultat :

    • Le tableau de résultats contiendra les nœuds dans l'ordre postérieur une fois la boucle terminée.

Cette approche itérative simule efficacement le parcours post-ordre en utilisant une pile et en inversant le processus généralement effectué par récursion.

Liens de contact

Si vous avez trouvé cette série utile, pensez à donner une étoile au référentiel sur GitHub ou à partager la publication sur vos réseaux sociaux préférés ?. Votre soutien signifierait beaucoup pour moi !

Si vous souhaitez du contenu plus utile comme celui-ci, n'hésitez pas à me suivre :

  • LinkedIn
  • GitHub

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!