当前位置:首页 > 日记 > 正文

php实现的二叉树遍历算法示例

php实现的二叉树遍历算法示例

本文实例讲述了php实现的二叉树遍历算法。分享给大家供大家参考,具体如下:

今天使用php来实现二叉树的遍历

创建的二叉树如下图所示

php代码如下所示:

<?phpclass Node {  public $value;  public $child_left;  public $child_right;}final class Erdic {  //前序遍历:先访问根节点,再遍历左子树,最后遍历右子树;并且在遍历左右子树时,仍需先遍历根节点,然后访问左子树,最后遍历右子树  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;//前序遍历Erdic::preOrder($a); //结果是:A B D H I G C E Fecho '<br/>';//中序遍历Erdic::midOrder($a); //结果是: H D I B G A E C Fecho '<br/>';//后序遍历Erdic::endOrder($a); //结果是: H I D G B E F C A

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数据结构与算法教程》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

相关文章

如何避免QQ帐号被盗

如何避免QQ帐号被盗

被盗,帐号,电脑软件,QQ,  用户只要使用安全的电脑登录QQ,并在登录及聊天过程中注意一些关键的细节就可以在绝大多数情况下避免QQ被盗取的风险。目前,根据已掌握的盗号者非法获取QQ密码的案例,QQ安全团队提供了以下三条建议:建议一:各类上网场…

excel2013输入值非法的解决方法exc

excel2013输入值非法的解决方法exc

输入,解决方法,电脑软件,strong,  在Excel中,有些情况在输入数据之后显示值是非法的,其实这个是因为数据有效性限制了你的输入范围,接下来是小编为大家带来的excel2013输入值非法的解决方法,以下用03版本做示范,2013版本的跟03版本通用,希望对…

在页面中引入js的两种方法 | 推荐

在页面中引入js的两种方法 | 推荐

推荐,方法,两种,页面,电脑软件,在页面中引入js有两种基本方式:在页面中嵌入js、引用外部js文件。一、在页面中嵌入js这是在页面使用js最简单的方式了,一般我在写个小测试的情况下会用这种方式。把script元素写在</body>前面,script元素的内容…

浅谈JS封闭函数、闭包、内置对象

浅谈JS封闭函数、闭包、内置对象

闭包,内置对象,函数,浅谈,电脑软件,一、变量作用域指的是变量的作用范围,javascript中的变量分为全局变量和局部变量1、全局变量:在函数之外定义的变量,为整个页面公用,函数的内部外部都可以访问。2、局部变量:在函数内部定义的变量,只能在定义该…

详解JavaScript中的六种错误类型

详解JavaScript中的六种错误类型

错误类型,六种,详解,电脑软件,JavaScript,刚入前端坑,英语又不太好的同学,是不是还在为控制台的错误抓耳挠腮?今天就带大家看一看JavaScript中常见的错误类型。js中的控制台的报错信息主要分为两大类,第一类是语法错误,这一类错误在预解析的过程…

AI制作空间感非常强的3d立体环形文

AI制作空间感非常强的3d立体环形文

教程,文字,3d,空间感,环形,版权申明:本文原创作者&ldquo;小胡舵主&rdquo;,感谢&ldquo;小胡舵主&rdquo;的原创经验分享!使用AI制作空间感非常强的3d立体环形文字,我们要制作出来的文字效果是制作立体环形的感觉,凸显文字的空间感。本次教程内容主…

Excel中怎样随数值改变表格颜色

Excel中怎样随数值改变表格颜色

方法,数值,表格,颜色,电脑软件,  怎么在EXCEL里面设置我们输入正负数,它会自己改变表格的颜色?下面是小编为大家整理的Excel中随数值改变而改变表格颜色的方法,希望大家能够从中有所收获!Excel中随数值改变表格颜色的方法使用条件格式或单…

TIOBE编程语言排行榜前20的语言入

TIOBE编程语言排行榜前20的语言入

语言,书籍推荐,编程语言,入门,排行榜,根据TIOBE 编程语言排行榜前20的语言分享相关图书(部分空缺)。在正式介绍编程语言排行之前,你敢不敢先挑战一下自己的编程技能?!测试下自己的编程风格?!挑战编程技能:57道程序员功力测试题 践行“实践出真知”…

excel2010输入红颜色字体的方法是

excel2010输入红颜色字体的方法是

字体,输入,方法,红颜色,电脑软件,  excel2010输入红颜色字体,很多时候需要不同的颜色来对不同的事情加以说明,红色多代表是提醒的。以下是小编为您带来的关于excel2010输入红颜色字体,希望对您有所帮助。excel2010输入红颜色字体1:输入&ldquo…

PPT中如何制作七彩发光字

PPT中如何制作七彩发光字

发光字,电脑软件,PPT,  很多人都知道怎么在PowerPoint中给文字设置发光效果,因为它里面直接集成了这个功能,PowerPoint只能一次给文字添加一种颜色的发光效果,如果我们想要得到多种颜色的发光效果就得靠自己了。以下是小编为您带来的关于PPT…

Vue filters过滤器的使用方法

Vue filters过滤器的使用方法

过滤器,使用方法,电脑软件,Vue,filters,本文实例为大家分享了Vue filters过滤器使用,供大家参考,具体内容如下实例先来看看一段代码理解下 html<div id="app"> {{message | filters2| filters3(true,priceCount)}}</div>jsvar app = new V…

利用HBuilder打包前端开发webapp为

利用HBuilder打包前端开发webapp为

方法,前端开发,电脑软件,HBuilder,apk,现在的前端开发可谓是,百花齐放啦,什么都可以做,只有想不到没有做不到的,今天就简单的介绍用vue,ng或者是react开发的单页应用如何打包为apk,在移动设备上运行。这里以vue为例,其他的差不多,大家可以根据自己…