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

PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法

PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法

本文实例讲述了PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法。分享给大家供大家参考,具体如下:

先来看看前序遍历、中序遍历与后序遍历原理图:

根据树的前序遍历和中序遍历构造树并输出后序遍历代码如下:

<?phpclass BinaryTreeNode{  public $m_value;  public $m_left;  public $m_right;}function ConstructCore($preorder,$inorder){  if(count($preorder)!=count($inorder) || count($preorder)==0 || count($inorder)==0)  return null;  $headNode=new BinaryTreeNode;  $headNode->m_value=$preorder[0];  if(count($preorder)==1){    $headNode->m_left=null;    $headNode->m_right=null;    return $headNode;  }  array_shift($preorder);  $pos=array_search($headNode->m_value,$inorder);  $leftin=array_slice($inorder,0,$pos);  $rightin=array_slice($inorder,$pos+1);  $leftpre=array_slice($preorder,0,$pos);  $rightpre=array_slice($preorder,$pos);  $headNode->m_left=ConstructCore($leftpre,$leftin);  $headNode->m_right=ConstructCore($rightpre,$rightin);  return $headNode;}$pre=array(1,2,4,7,3,5,6,8);$in=array(4,7,2,1,5,3,8,6);$tree=ConstructCore($pre,$in);function tail($tree){  if($tree->m_right!=null)  echo tail($tree->m_right);  if($tree->m_left!=null)  echo tail($tree->m_left);    echo $tree->m_value;}tail($tree);?>

运行结果:

86537421

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数据结构与算法教程》、《php程序设计算法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》及《PHP数学运算技巧总结》

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

相关文章

linux修改php.ini后重新加载配置文

linux修改php.ini后重新加载配置文

配置文件,加载,修改,命令,电脑软件,本篇以centos系统为例。PHP的一般默认安装目录是:/usr/local/php/我们用php-fpm来进行重新加载配置文件(如php.ini):/usr/local/php/sbin/php-fpm reload注:/usr/local/php/sbin/php-fpm还有其他参数,包括:start…

ps怎么给证件照换底色?PS快速把证件

ps怎么给证件照换底色?PS快速把证件

教程,底色,证件照,快速,电脑软件,教你用photoshop给证件照换底色,PS给图片换底色是学习PS过程中相对简单的入门知识,换底色的方法很多,沫沫老师今天主要给大家介绍的是利用颜色替换方法快速地给美女证件照蓝底换红底,接下来详细介绍步骤,感兴趣…

如何使用Word2007在Word2007中使用

如何使用Word2007在Word2007中使用

方法,如何使用,电脑软件,VBAVBA,对办公室的巨大成功的重要原因是VBA,可以做很多事情,使用VBA,还有无数的VBA程序基于Excel和Word,VBA是如此的重要,这是如此的重要,那么下面的小编辑将教你如何在Word2007中使用VBA。 利用VBA在Word2007中的方法 …

Word文档怎样设置日期控件

Word文档怎样设置日期控件

文档,日期控件,设置,电脑软件,Word,自己制作好的word文档,如果需要别人填写出生日期,可以通过使用日期控件来保证别人输入的日期格式一样。1、如图,比如我们要在出生日期后面添加一个日期控件,就将光标定位在&ldquo;出生日期:&rdquo;后面。2、然…

怎么样在PPT中制作背景填充文字的

怎么样在PPT中制作背景填充文字的

文字,填充,背景,效果,电脑软件,  ppt中要设计一个文字,想要将图片直接填充到文字中,这样文字就有图案了。以下是小编为您带来的关于PPT制作背景填充文字的效果,希望对您有所帮助。PPT制作背景填充文字的效果1、首先,我们先插入一张图片,我这是…

AI结合AE制作有趣可爱的搜索gif动

AI结合AE制作有趣可爱的搜索gif动

动画教程,搜索,有趣,可爱,电脑软件,效果图:主要过程:12 3 阅读全文1 23 阅读全文教程结束,以上就是AI结合AE制作有趣可爱的搜索gif动画教程的全部内容,希望大家喜欢!相关教程推荐: 30分钟 AI结合AE打造可爱毛毛虫爬行的gif动画效果GIF图片让你…

WPS表格怎么找出重复项WPS表格找出

WPS表格怎么找出重复项WPS表格找出

方法,步骤,数字,查找,表格,  我们在wps表格中的单列录入大量数据时,可能会因为疏忽而录入了重复的数据这时要在大量的数据中查找就会很费时间,下面小编教你简单找出重复项的方法。希望对你有帮助!▼▼▼更多WPS表格的操作技巧,欢迎点击▼▼▼…

微信小程序之选项卡的实现方法

微信小程序之选项卡的实现方法

方法,选项卡,程序,电脑软件,微信小, 微信小程序之选项卡的实现方法前言:从事前端的同学们一定不会对选项卡陌生,不管是自己原生写的,还是各个UI框架里带的,我想大家都使用过很多选项卡,对选项卡的原理也足够清楚了,下面我们来在微信小程序里实现…

利用径向模糊滤镜简单几步创造冲击

利用径向模糊滤镜简单几步创造冲击

创造,滤镜,模糊,冲击力,几步,   今天要分享的ps教程将会是很多同学喜欢的,这种动感效果会为你的照片和专题头图等设计增添很棒的效果!本教程中我们将学习如何使用径向模糊滤镜来给照片添加运动效果。径向模糊的一个缺点是不能实…

Thinkphp实现站点静态化的方法详解

Thinkphp实现站点静态化的方法详解

方法,站点,静态化,详解,电脑软件,thinkphp提供了一个有效的生成静态页的方法,(在tp2.0的手册上有说明,3.0的手册上没有说明了,不过3.0方法还是存在的。)$this->buildHtml('静态文件', '静态路径','模板文件');稍微说明下参数,有些朋友问…

Word文档怎么根据实际需要新建主题

Word文档怎么根据实际需要新建主题

文档,主题,电脑软件,Word,  默认情况下,Word2010提供了多种主题供用户选择,并且微软的官网还提供了多种联机主题,如果这些主题依然不能满足需求,可以根据实际需要新建主题。以下是小编为您带来的关于Word根据实际需要新建主题,希望对您有所帮…

总结PHP中DateTime的常用方法

总结PHP中DateTime的常用方法

常用方法,电脑软件,PHP,DateTime,前言实例化对象前面加\表示的是,在命名空间中使用原生的类,如果没有使用命名空间的话,可以把前面的\给删除掉1. 输出当前时间$datetime = new \DateTime;print_r($datetime->format('Y-m-d H:i:s'));2. …