国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 崇信县| 清水县| 英吉沙县| 兰西县| 九龙城区| 凤冈县| 噶尔县| 遂溪县| 武陟县| 克拉玛依市| 长阳| 聂荣县| 汉川市| 乌拉特后旗| 阜康市| 霍邱县| 合阳县| 老河口市| 苍南县| 宜州市| 泰州市| 金昌市| 民和| 延长县| 鄂托克前旗| 安康市| 平乐县| 吴堡县| 土默特左旗| 吴旗县| 平南县| 美姑县| 福州市| 吉安县| 比如县| 宁化县| 南木林县| 将乐县| 莱西市| 万载县| 钟祥市|