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 setcookie(name, value, expires, path, domain, secure) 参数详解
Jun 28 PHP
php获取文件夹路径内的图片以及分页显示示例
Mar 11 PHP
PHP解析html类库simple_html_dom的转码bug
May 22 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
Oct 16 PHP
PHP操作文件的一些基本函数使用示例
Nov 18 PHP
php魔术函数__call()用法实例分析
Feb 13 PHP
PHP stream_context_create()函数的使用示例
May 12 PHP
PHP实现通过get方式识别用户发送邮件的方法
Jul 16 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
May 27 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
Sep 11 PHP
php 类中的常量、静态属性、非静态属性的区别
Apr 09 PHP
PHP开发api接口安全验证操作实例详解
Mar 26 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
详解PHP显示MySQL数据的三种方法
2008/06/05 PHP
php is_file()和is_dir()用于遍历目录时用法注意事项
2010/03/02 PHP
php基础教程 php内置函数实例教程
2012/08/21 PHP
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
2012/12/27 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
Bootstrap按钮组件详解
2016/04/26 Javascript
js剪切板应用clipboardData实例解析
2016/05/29 Javascript
BootStrap Table 分页后重新搜索问题的解决办法
2016/08/08 Javascript
js获取元素的标签名实现方法
2016/10/08 Javascript
正则 js分转元带千分符号详解
2017/03/08 Javascript
详解微信小程序 相对定位和绝对定位
2017/05/11 Javascript
JS判断数组那点事
2017/10/10 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
vue实现新闻展示页的步骤详解
2019/04/11 Javascript
解决Layui当中的导航条动态添加后渲染失败的问题
2019/09/25 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
基于VUE实现简单的学生信息管理系统
2021/01/13 Vue.js
wxpython中Textctrl回车事件无效的解决方法
2016/07/21 Python
Python延时操作实现方法示例
2018/08/14 Python
Python实现钉钉发送报警消息的方法
2019/02/20 Python
Python求凸包及多边形面积教程
2020/04/12 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
2020/07/23 Python
HTML5使用Audio标签实现歌词同步的效果
2016/03/17 HTML / CSS
中国第一家杂志折扣订阅网:杂志铺
2016/08/30 全球购物
可打印的优惠券、杂货和优惠券代码:Coupons.com
2018/06/12 全球购物
eVitamins日本:在线购买折扣维生素、补品和草药
2019/04/04 全球购物
荷兰时尚精品店:Labels Fashion
2020/03/22 全球购物
护理职业生涯规划书
2014/01/24 职场文书
幼儿园消防安全制度
2014/01/26 职场文书
商超业务员岗位职责
2015/02/13 职场文书
女性健康讲座主持词
2015/07/04 职场文书
禁毒主题班会教案
2015/08/14 职场文书
pytorch通过训练结果的复现设置随机种子
2021/06/01 Python
mysql如何能有效防止删库跑路
2021/10/05 MySQL
python全面解析接口返回数据
2022/02/12 Python
windows server2008 开启端口的实现方法
2022/06/25 Servers