Heim  >  Artikel  >  Backend-Entwicklung  >  PHP erklärt, wie man Binärbäume in Zickzack-Reihenfolge druckt

PHP erklärt, wie man Binärbäume in Zickzack-Reihenfolge druckt

jacklove
jackloveOriginal
2018-06-30 17:50:151465Durchsuche

In diesem Artikel wird hauptsächlich die Methode von PHP zum Drucken von Binärbäumen in Zick-Zack-Reihenfolge vorgestellt, wobei die zugehörigen Betriebsfähigkeiten von PHP in Kombination mit der Stapeldurchquerung von Binärbäumen berücksichtigt werden

Das Beispiel In diesem Artikel geht es um die PHP-Implementierung des Druckens von Binärbäumen in Zickzackreihenfolge. Eine Methode zum Drucken eines Binärbaums in Zickzackreihenfolge. Teilen Sie es wie folgt als Referenz mit allen:

Frage

Bitte implementieren Sie eine Funktion, um den Binärbaum in einem Zickzackmuster zu drucken. Das heißt, die erste Zeile lautet wie folgt: Drucken Sie von links nach rechts, die zweite Ebene druckt von rechts nach links, die dritte Zeile druckt von links nach rechts und so weiter für die anderen Zeilen.

Lösung

Zwei Stapel verwenden

Implementierungscode

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

Artikel, die Sie interessieren könnten:

Erklärung, wie man mit PHP ein Binärbaumbild erhält

Erklärung, wie man mit PHP den K-ten Knoten vom letzten in einer verknüpften Liste erhält

Wie man druckt ein Binärbaum von oben nach unten in PHP Explain

Das obige ist der detaillierte Inhalt vonPHP erklärt, wie man Binärbäume in Zickzack-Reihenfolge druckt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn