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自定义函数收代码
Aug 01 PHP
fleaphp crud操作之findByField函数的使用方法
Apr 23 PHP
php 定界符格式引起的错误
May 24 PHP
浅析51个PHP处理字符串的函数
Aug 02 PHP
php操作(删除,提取,增加)zip文件方法详解
Mar 12 PHP
PHP获取某个月最大天数(最后一天)的方法
Jul 29 PHP
微信公众平台开发之天气预报功能
Aug 31 PHP
PHP无限极分类函数的实现方法详解
Apr 15 PHP
PHP 获取 ping 时间的实现方法
Sep 29 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
Apr 15 PHP
Yii框架实现对数据库的CURD操作示例
Sep 03 PHP
解决laravel中日志权限莫名变成了root的问题
Oct 17 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
水质对咖图啡风味的影响具体有哪些
2021/03/03 冲泡冲煮
在任意字符集下正常显示网页的方法二(续)
2007/04/01 PHP
php解析xml 的四种简单方法(附实例)
2016/07/11 PHP
轻松掌握php设计模式之访问者模式
2016/09/23 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
Phpstorm+Xdebug断点调试PHP的方法
2018/05/14 PHP
PhpStorm配置Xdebug调试的方法步骤
2019/02/02 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
2019/03/21 PHP
使弱类型的语言JavaScript变强势
2009/06/22 Javascript
基于jquery的3d效果实现代码
2011/03/23 Javascript
无缝滚动改进版支持上下左右滚动(封装成函数)
2012/12/04 Javascript
js确认删除对话框效果的示例代码
2014/02/20 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
2015/06/01 Javascript
JavaScript和HTML DOM的区别与联系及Javascript和DOM的关系
2015/11/15 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
2016/06/13 Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
2016/08/25 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
2016/11/30 Javascript
jQuery读取XML文件的方法示例
2017/02/03 Javascript
node之本地服务器图片上传的方法示例
2019/03/26 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
2019/04/17 Javascript
微信小程序实现列表滚动头部吸顶的示例代码
2020/07/12 Javascript
[01:25:38]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第一场 1月19日
2021/03/11 DOTA
在windows系统中实现python3安装lxml
2016/03/23 Python
快速了解Python相对导入
2018/01/12 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
2018/07/27 Python
python中的数据结构比较
2019/05/13 Python
python绘制随机网络图形示例
2019/11/21 Python
python异常处理try except过程解析
2020/02/03 Python
Python使用matplotlib绘制圆形代码实例
2020/05/27 Python
python获取百度热榜链接的实例方法
2020/08/25 Python
python实现简单的五子棋游戏
2020/09/01 Python
Servlet方面面试题
2016/09/28 面试题
11月红领巾广播稿
2014/01/17 职场文书
未中标通知书
2015/04/17 职场文书
2015夏季作息时间调整通知
2015/04/24 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书