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 相关文章推荐
第七节 类的静态成员 [7]
Oct 09 PHP
Mysql的常用命令
Oct 09 PHP
基于PHP5魔术常量与魔术方法的详解
Jun 13 PHP
PhpDocumentor 2安装以及生成API文档的方法
May 21 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
Jul 19 PHP
php实现mysql事务处理的方法
Dec 25 PHP
PHP生成静态HTML页面最简单方法示例
Apr 09 PHP
php基于curl实现的股票信息查询类实例
Nov 11 PHP
浅谈ThinkPHP中initialize和construct的区别
Apr 01 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
Oct 06 PHP
PHP+ajax实现二级联动菜单功能示例
Aug 10 PHP
总结PHP中初始化空数组的最佳方法
Feb 13 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
星际争霸兵种名称对照表
2020/03/04 星际争霸
CodeIgniter图像处理类的深入解析
2013/06/17 PHP
php获取文件夹路径内的图片以及分页显示示例
2014/03/11 PHP
php批量删除数据库下指定前缀的表以prefix_为例
2014/08/24 PHP
php使用指定字符列表生成随机字符串的方法
2015/04/18 PHP
PHP实现微信发红包程序
2015/08/24 PHP
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
workerman结合laravel开发在线聊天应用的示例代码
2018/10/30 PHP
javascript 函数式编程
2007/08/16 Javascript
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
页面右下角弹出提示框示例代码js版
2013/08/02 Javascript
js判断选择的时间是否大于今天的代码
2013/08/20 Javascript
JS获取农历日期具体实例
2013/11/14 Javascript
jQuery移除元素自动解绑事件实现思路及代码
2014/05/31 Javascript
jquery获取选中的文本和值的方法
2014/07/08 Javascript
AngularJS动态菜单操作指令
2017/04/25 Javascript
完美实现js拖拽效果 return false用法详解
2017/07/28 Javascript
angular.js4使用 RxJS 处理多个 Http 请求
2017/09/23 Javascript
在angular 6中使用 less 的实例代码
2018/05/13 Javascript
D3.js实现拓扑图的示例代码
2018/06/30 Javascript
js设置默认时间跨度过程详解
2019/07/17 Javascript
Vue使用虚拟dom进行渲染view的方法
2019/12/26 Javascript
[03:39]DOTA2英雄梦之声_第05期_幽鬼
2014/06/23 DOTA
跟老齐学Python之总结参数的传递
2014/10/10 Python
Python使用修饰器执行函数的参数检查功能示例
2017/09/26 Python
python 生成器和迭代器的原理解析
2019/10/12 Python
手把手教你安装Windows版本的Tensorflow
2020/03/26 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
2020/04/22 Python
HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
2014/04/10 HTML / CSS
英国时尚家具、家居饰品及礼品商店:Graham & Green
2016/09/15 全球购物
寒假家长评语大全
2014/04/16 职场文书
银行求职信怎么写
2014/05/26 职场文书
法人代表证明书格式
2014/10/01 职场文书
学生自我评语
2015/01/04 职场文书
民事诉讼代理词
2015/05/25 职场文书
2019学生会干事辞职信
2019/06/27 职场文书