<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            php語言

            php如何實現的二叉樹遍歷(示例)

            時間:2025-02-07 16:02:29 php語言 我要投稿
            • 相關推薦

            php如何實現的二叉樹遍歷(示例)

              本文主要介紹了php實現的二叉樹遍歷算法,結合具體實例形式分析了php針對二叉樹的常用前序、中序及后序遍歷算法實現技巧,需要的朋友可以參考一下!想了解更多相關信息請持續關注我們應屆畢業生考試網!

              創建的二叉樹如下圖所示

              php代碼如下所示:

              <?php

              class Node {

              public $value;

              public $child_left;

              public $child_right;

              }

              final class Ergodic {

              //前序遍歷:先訪問根節點,再遍歷左子樹,最后遍歷右子樹;并且在遍歷左右子樹時,仍需先遍歷根節點,然后訪問左子樹,最后遍歷右子樹

              public static function preOrder($root){

              $stack = array();

              array_push($stack, $root);

              while(!empty($stack)){

              $center_node = array_pop($stack);

              echo $center_node->value . ' ';

              //先把右子樹節點入棧,以確保左子樹節點先出棧

              if($center_node->child_right != null) array_push($stack, $center_node->child_right);

              if($center_node->child_left != null) array_push($stack, $center_node->child_left);

              }

              }

              //中序遍歷:先遍歷左子樹、然后訪問根節點,最后遍歷右子樹;并且在遍歷左右子樹的時候。仍然是先遍歷左子樹,然后訪問根節點,最后遍歷右子樹

              public static function midOrder($root){

              $stack = array();

              $center_node = $root;

              while (!empty($stack) || $center_node != null) {

              while ($center_node != null) {

              array_push($stack, $center_node);

              $center_node = $center_node->child_left;

              }

              $center_node = array_pop($stack);

              echo $center_node->value . ' ';

              $center_node = $center_node->child_right;

              }

              }

              //后序遍歷:先遍歷左子樹,然后遍歷右子樹,最后訪問根節點;同樣,在遍歷左右子樹的時候同樣要先遍歷左子樹,然后遍歷右子樹,最后訪問根節點

              public static function endOrder($root){

              $push_stack = array();

              $visit_stack = array();

              array_push($push_stack, $root);

              while (!empty($push_stack)) {

              $center_node = array_pop($push_stack);

              array_push($visit_stack, $center_node);

              //左子樹節點先入$pushstack的棧,確保在$visitstack中先出棧

              if ($center_node->child_left != null) array_push($push_stack, $center_node->child_left);

              if ($center_node->child_right != null) array_push($push_stack, $center_node->child_right);

              }

              while (!empty($visit_stack)) {

              $center_node = array_pop($visit_stack);

              echo $center_node->value . ' ';

              }

              }

              }

              //創建二叉樹

              $a = new Node();

              $b = new Node();

              $c = new Node();

              $d = new Node();

              $e = new Node();

              $f = new Node();

              $g = new Node();

              $h = new Node();

              $i = new Node();

              $a->value = 'A';

              $b->value = 'B';

              $c->value = 'C';

              $d->value = 'D';

              $e->value = 'E';

              $f->value = 'F';

              $g->value = 'G';

              $h->value = 'H';

              $i->value = 'I';

              $a->child_left = $b;

              $a->child_right = $c;

              $b->child_left = $d;

              $b->child_right = $g;

              $c->child_left = $e;

              $c->child_right = $f;

              $d->child_left = $h;

              $d->child_right = $i;

              //前序遍歷

              Ergodic::preOrder($a); //結果是:A B D H I G C E F

              echo '<br/>';

              //中序遍歷

              Ergodic::midOrder($a); //結果是: H D I B G A E C F

              echo '<br/>';

              //后序遍歷

              Ergodic::endOrder($a); //結果是: H I D G B E F C A


            【php如何實現的二叉樹遍歷(示例)】相關文章:

            PHP使用遞歸算法無限遍歷數組示例05-20

            關于php中hashtable實現示例08-02

            PHP中多態如何實現09-04

            php如何實現快速排序09-18

            如何用PHP實現找回密碼11-11

            php如何實現驗證碼06-13

            PHP弱類型變量是如何實現的05-31

            如何實現PHP圖片裁剪與縮放07-13

            PHP中如何實現crontab代碼05-30

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看