PHP explique comment imprimer des arbres binaires en zigzag

jacklove
Libérer: 2023-04-02 07:42:01
original
1488 Les gens l'ont consulté

Cet article présente principalement la méthode PHP pour réaliser l'impression d'arbres binaires dans l'ordre zigzag, impliquant les compétences opérationnelles associées de PHP combinées à la traversée de pile d'arbres binaires. Les amis dans le besoin peuvent s'y référer

L'exemple. de cet article raconte l'implémentation PHP de l'impression d'arbres binaires en ordre zigzag. Une méthode pour imprimer un arbre binaire en ordre zigzag. Partagez-le avec tout le monde pour votre référence, comme suit :

Question

Veuillez implémenter une fonction pour imprimer l'arbre binaire dans un motif en zigzag, c'est-à-dire que la première ligne est la suivante : Imprimez de gauche à droite, le deuxième calque s'imprime de droite à gauche, la troisième ligne s'imprime de gauche à droite, et ainsi de suite pour les autres lignes.

Solution

Utiliser deux piles

Code d'implémentation

<?php
/*class TreeNode{
  var $val;
  var $left = NULL;
  var $right = NULL;
  function __construct($val){
    $this->val = $val;
  }
}*/
function MyPrint($pRoot)
{
  if($pRoot == NULL)
    return [];
  $current = 0;
  $next  = 1;
  $stack[0] = array();
  $stack[1] = array();
  $resultQueue = array();
  array_push($stack[0], $pRoot);
  $i = 0;
  $result = array();
  $result[0]= array();
  while(!empty($stack[0]) || !empty($stack[1])){
    $node = array_pop($stack[$current]);
    array_push($result[$i], $node->val);
    //var_dump($resultQueue);echo "</br>";
    if($current == 0){
      if($node->left != NULL)
        array_push($stack[$next], $node->left);
      if($node->right != NULL)
        array_push($stack[$next], $node->right);
    }else{
      if($node->right != NULL)
        array_push($stack[$next], $node->right);
      if($node->left != NULL)
        array_push($stack[$next], $node->left);
    }
    if(empty($stack[$current])){
      $current = 1-$current;
      $next  = 1-$next;
      if(!empty($stack[0]) || !empty($stack[1])){
        $i++;
        $result[$i] = array();
      }
    }
  }
  return $result;
}
Copier après la connexion

Articles qui pourraient vous intéresser :

Explication de comment obtenir une image d'arbre binaire avec PHP

Explication de comment obtenir le Kème nœud du dernier dans une liste chaînée avec PHP

PHP imprime un arbre binaire de haut en bas Explication de la méthode

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!

Étiquettes associées:
source:php.cn
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