Maison > développement back-end > tutoriel php > Exemple de code d'algorithme de construction d'arbre binaire PHP

Exemple de code d'algorithme de construction d'arbre binaire PHP

怪我咯
Libérer: 2023-03-12 18:18:01
original
1625 Les gens l'ont consulté

Cet article présente principalement des exemples d'algorithmes de construction d'arbres binaires en PHP. L'éditeur pense que c'est plutôt bon. Maintenant, je vais le partager avec vous et le donner comme référence. Suivons l'éditeur et jetons un coup d'œil.

L'arbre est toujours très important dans la structure des données. Ici, l'arbre binaire est représenté par une notation entre parenthèses. Écrivez d'abord une classe de nœuds d'arbre binaire :

// 二叉树节点
class BTNode {
  public $data;

  public $lchild = NULL;

  public $rchild = NULL;

  public function construct($data) {
    $this->data = $data;
  }
}
Copier après la connexion

Ensuite, construisez un arbre binaire :

function CreateBTNode(&$root,string $str)
{
  $strArr = str_split($str);
  $stack = [];
  $p = NULL; // 指针
  $top = -1;
  $k = $j = 0;
  $root = NULL;
  foreach ($strArr as $ch) {
    switch ($ch) {
      case '(':
        $top++;
        array_push($stack, $p);
        $k = 1;
        break;
      case ')':
        array_pop($stack);
        break;
      case ',':
        $k = 2;
        break;
      default:
        $p = new BTNode($ch);
        if($root == NULL) {
          $root = $p;
        } else {
          switch ($k) {
            case 1:
              end($stack)->lchild = $p;
              break;
            case 2:
              end($stack)->rchild = $p;
              break;
          }
        }
        break;
    }
  }
}
Copier après la connexion

Écrivez ici une fonction pour imprimer l'arbre binaire (parcours dans l'ordre) :

function PrintBTNode($node)
{
  if($node != NULL) {
    PrintBTNode($node->lchild);
    echo $node->data;
    PrintBTNode($node->rchild);
  }
}
Copier après la connexion

Résultat de l'exécution :

Entrez une chaîne
"A(B(C,D),G(F))"

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