您好,欢迎访问一九零五行业门户网

二叉树遍历算法-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的示例的详细内容。
其它类似信息

推荐信息