国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 邏輯算法 > 正文

php實(shí)現(xiàn)二叉樹(shù)遍歷算法演示

2020-03-22 18:42:20
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了php實(shí)現(xiàn)的二叉樹(shù)遍歷算法,結(jié)合具體實(shí)例形式分析了php針對(duì)二叉樹(shù)的常用前序、中序及后序遍歷算法實(shí)現(xiàn)技巧,需要的朋友可以參考下

本文實(shí)例講述了php實(shí)現(xiàn)的二叉樹(shù)遍歷算法。分享給大家供大家參考,具體如下:

今天使用php來(lái)實(shí)現(xiàn)二叉樹(shù)的遍歷

創(chuàng)建的二叉樹(shù)如下圖所示

php代碼如下所示:


<?phphtml' target='_blank'>class Node {  public $value;  public $child_left;  public $child_right;}final class Ergodic {  //前序遍歷:先訪問(wèn)根節(jié)點(diǎn),再遍歷左子樹(shù),最后遍歷右子樹(shù);并且在遍歷左右子樹(shù)時(shí),仍需先遍歷根節(jié)點(diǎn),然后訪問(wèn)左子樹(shù),最后遍歷右子樹(shù)  public static function preOrder($root){    $stack = array();    array_push($stack, $root);    while(!empty($stack)){      $center_node = array_pop($stack);      echo $center_node->value . ' ';      //先把右子樹(shù)節(jié)點(diǎn)入棧,以確保左子樹(shù)節(jié)點(diǎn)先出棧      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);    }  }  //中序遍歷:先遍歷左子樹(shù)、然后訪問(wèn)根節(jié)點(diǎn),最后遍歷右子樹(shù);并且在遍歷左右子樹(shù)的時(shí)候。仍然是先遍歷左子樹(shù),然后訪問(wèn)根節(jié)點(diǎn),最后遍歷右子樹(shù)  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;    }  }  //后序遍歷:先遍歷左子樹(shù),然后遍歷右子樹(shù),最后訪問(wèn)根節(jié)點(diǎn);同樣,在遍歷左右子樹(shù)的時(shí)候同樣要先遍歷左子樹(shù),然后遍歷右子樹(shù),最后訪問(wèn)根節(jié)點(diǎn)  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);      //左子樹(shù)節(jié)點(diǎn)先入$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 . ' ';    }  }}//創(chuàng)建二叉樹(shù)$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); //結(jié)果是:A B D H I G C E Fecho '<br/>';//中序遍歷Ergodic::midOrder($a); //結(jié)果是: H D I B G A E C Fecho '<br/>';//后序遍歷Ergodic::endOrder($a); //結(jié)果是: H I D G B E F C A

以上就是php實(shí)現(xiàn)二叉樹(shù)遍歷算法演示的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注 其它相關(guān)文章!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 和静县| 财经| 佛山市| 辛集市| 开远市| 嘉定区| 高碑店市| 同仁县| 巴东县| 梧州市| 应用必备| 山东省| 嘉义县| 青河县| 岫岩| 札达县| 龙里县| 武平县| 安平县| 喀什市| 广水市| 台安县| 泸定县| 赣榆县| 巴南区| 临猗县| 新野县| 九龙坡区| 梓潼县| 旬邑县| 克拉玛依市| 根河市| 巴里| 霍州市| 车致| 沙田区| 东乌珠穆沁旗| 海丰县| 玉田县| 柘城县| 英山县|