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 相关文章推荐
解析mysql left( right ) join使用on与where筛选的差异
Jun 18 PHP
神盾加密解密教程(二)PHP 神盾解密
Jun 08 PHP
PHP类的反射用法实例
Nov 03 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
Apr 15 PHP
php中get_defined_constants函数用法实例分析
May 12 PHP
PHP通过串口实现发送短信
Jul 08 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
Mar 08 PHP
php简单复制文件的方法
May 09 PHP
mysql alter table命令修改表结构实例详解
Sep 24 PHP
详解php与ethereum客户端交互
Apr 28 PHP
PHP实现一维数组与二维数组去重功能示例
May 24 PHP
phpstorm 配置xdebug的示例代码
Mar 31 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 如何获取二维数组中某个key的集合
2014/06/03 PHP
Yii开启片段缓存的方法
2016/03/28 PHP
php快速排序原理与实现方法分析
2016/05/26 PHP
php基于websocket搭建简易聊天室实践
2016/10/24 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
实例:尽可能写友好的Javascript代码
2006/10/09 Javascript
使用JQuery和s3captche实现一个水果名字的验证
2009/08/14 Javascript
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
JavaScript 学习笔记之操作符(续)
2015/01/14 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
Javascript的比较汇总
2016/07/25 Javascript
Javascript 实现微信分享(QQ、朋友圈、分享给朋友)
2016/10/21 Javascript
基于vue2框架的机器人自动回复mini-project实例代码
2017/06/13 Javascript
js Date()日期函数浏览器兼容问题解决方法
2017/09/12 Javascript
vue与vue-i18n结合实现后台数据的多语言切换方法
2018/03/08 Javascript
webpack优化的深入理解
2018/12/10 Javascript
vue+express+jwt持久化登录的方法
2019/06/14 Javascript
koa2 从入门到精通(小结)
2019/07/23 Javascript
JavaScript如何获取一个元素的样式信息
2019/07/29 Javascript
解决vue-pdf查看pdf文件及打印乱码的问题
2020/11/04 Javascript
js实现随机点名
2021/01/19 Javascript
在Django中进行用户注册和邮箱验证的方法
2016/05/09 Python
基于OpenCV python3实现证件照换背景的方法
2019/03/22 Python
详解用Python实现自动化监控远程服务器
2019/05/18 Python
python实现飞船游戏的纵向移动
2020/04/24 Python
python中sklearn的pipeline模块实例详解
2020/05/21 Python
python字典的值可以修改吗
2020/06/29 Python
Python使用xlrd实现读取合并单元格
2020/07/09 Python
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
武汉瑞得软件笔试题
2015/10/27 面试题
实习自我鉴定
2013/12/15 职场文书
物资采购方案
2014/06/12 职场文书
房产公证委托书范本
2014/09/20 职场文书
文明单位申报材料
2014/12/23 职场文书
2016大一新生军训感言
2015/12/08 职场文书
JavaScript实现淘宝商品图切换效果
2021/04/29 Javascript