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


Posted in PHP onNovember 10, 2017

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

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

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

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

<?php
class 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文本数据库的搜索方法
Oct 09 PHP
PHP4与PHP5的时间格式问题
Feb 17 PHP
判断是否为指定长度内字符串的php函数
Feb 16 PHP
对PHP语言认识上需要避免的10大误区
Jun 12 PHP
Laravel中使用自己编写类库的3种方法
Feb 10 PHP
php模拟post提交数据的方法
Feb 12 PHP
php使用Image Magick将PDF文件转换为JPG文件的方法
Apr 01 PHP
Yii框架实现邮箱激活的方法【数字签名】
Oct 18 PHP
利用php-cli和任务计划实现订单同步功能的方法
May 03 PHP
PHP判断json格式是否正确的实现代码
Sep 20 PHP
PHP实现支持CURL字符串证书传输的方法
Mar 23 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 PHP
PHP用函数嵌入网站访问量计数器
Oct 27 #PHP
PHP实现网站访问量计数器
Oct 27 #PHP
在 Laravel 中 “规范” 的开发短信验证码发送功能
Oct 26 #PHP
详解php 使用Callable Closure强制指定回调类型
Oct 26 #PHP
php静态成员方法和静态的成员属性的使用方法
Oct 26 #PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
Oct 26 #PHP
利用php获得flv视频长度的实例代码
Oct 26 #PHP
You might like
dedecms中显示数字验证码的修改方法
2007/03/21 PHP
允许phpmyadmin空密码登录的配置方法
2011/05/29 PHP
PHP实现生成唯一编号(36进制的不重复编号)
2014/07/01 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
2015/03/18 PHP
php封装json通信接口详解及实例
2017/03/07 PHP
Jquery实战_读书笔记2 选择器
2010/01/22 Javascript
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
2013/06/24 Javascript
js生成动态表格并为每个单元格添加单击事件的方法
2014/04/14 Javascript
AngularJS入门教程(零):引导程序
2014/12/06 Javascript
jquery实现的简单二级菜单效果代码
2015/09/22 Javascript
JavaScript在网页中画圆的函数arc使用方法
2015/11/13 Javascript
Jquery Ajax Error 调试错误的技巧
2015/11/20 Javascript
Javascript简单实现面向对象编程继承实例代码
2015/11/27 Javascript
JS判断iframe是否加载完成的方法
2016/08/03 Javascript
基于webpack4搭建的react项目框架的方法
2018/06/30 Javascript
ES6的解构赋值实例详解
2019/05/06 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
2019/05/27 Javascript
node.JS二进制操作模块buffer对象使用方法详解
2020/02/06 Javascript
[02:51]DOTA2战队出征照拍摄花絮 TI3明星化身时尚男模
2013/07/22 DOTA
Python3.2中的字符串函数学习总结
2015/04/23 Python
Ubuntu 下 vim 搭建python 环境 配置
2017/06/12 Python
Django查询数据库的性能优化示例代码
2017/09/24 Python
python环境下安装opencv库的方法
2020/03/05 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
2020/06/11 Python
Python代码覆盖率统计工具coverage.py用法详解
2020/11/25 Python
详解Selenium 元素定位和WebDriver常用方法
2020/12/04 Python
团员的自我评价
2013/12/01 职场文书
高中毕业生生活的自我评价
2013/12/08 职场文书
经贸日语专业个人求职信
2013/12/13 职场文书
国贸专业的职业规划范文
2014/01/23 职场文书
售后服务承诺书怎么写
2014/05/21 职场文书
2014年机关党委工作总结
2014/12/11 职场文书
2016学校先进党组织事迹材料
2016/02/29 职场文书
2016年教师党员公开承诺书
2016/03/24 职场文书
Spring mvc是如何实现与数据库的前后端的连接操作的?
2021/06/30 Java/Android
CSS实现鼠标悬浮动画特效
2023/05/07 HTML / CSS