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五种设计模式小结
Mar 23 PHP
163的邮件用phpmailer发送(实例详解)
Jun 24 PHP
浅析PHP微信支付通知的处理方式
May 25 PHP
Windows下安装PHP单元测试环境PHPUnit图文教程
Oct 24 PHP
PHP限制HTML内容中图片必须是本站的方法
Jun 16 PHP
PHP单链表的实现代码
Jul 05 PHP
PHP Mysqli 常用代码集合
Nov 12 PHP
PHP面向对象程序设计OOP继承用法入门示例
Dec 27 PHP
php写app接口并返回json数据的实例(分享)
May 20 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
May 11 PHP
PHP ADODB生成下拉列表框功能示例
May 29 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
May 21 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写的获取各搜索蜘蛛爬行记录代码
2012/08/21 PHP
PHP include任意文件或URL介绍
2014/04/29 PHP
PHP实现文件上传和多文件上传
2015/12/24 PHP
php封装json通信接口详解及实例
2017/03/07 PHP
php简单生成一组与多组随机字符串的方法
2017/05/09 PHP
利用php获得flv视频长度的实例代码
2017/10/26 PHP
php如何获取Http请求
2020/04/30 PHP
Prototype Date对象 学习
2009/07/12 Javascript
Document 对象的常用方法
2009/07/31 Javascript
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
用jquery仿做发微博功能示例
2014/04/18 Javascript
.NET微信公众号开发之创建自定义菜单
2015/07/16 Javascript
jQuery Mobile动态刷新页面样式的实现方法
2016/05/28 Javascript
JS判断是否手机或pad访问实现方法
2016/12/09 Javascript
AngularJS中$apply方法和$watch方法用法总结
2016/12/13 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
webpack的CSS加载器的使用
2018/09/11 Javascript
手动下载Chrome并解决puppeteer无法使用问题
2018/11/12 Javascript
Vue项目中配置pug解析支持
2019/05/10 Javascript
js实现的格式化数字和金额功能简单示例
2019/07/30 Javascript
vue 实现Web端的定位功能 获取经纬度
2019/08/08 Javascript
Vue分页插件的前后端配置与使用
2019/10/09 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
2020/04/28 Javascript
使用python实现链表操作
2018/01/26 Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
2018/02/08 Python
pandas对指定列进行填充的方法
2018/04/11 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
2019/05/10 Python
python函数的作用域及关键字详解
2019/08/20 Python
Python 如何操作 SQLite 数据库
2020/08/17 Python
彪马荷兰官网:PUMA荷兰
2019/05/08 全球购物
俄罗斯购买自行车网站:Vamvelosiped
2021/01/29 全球购物
JAVA高级程序员面试题
2013/09/06 面试题
python实现批量移动文件
2021/04/05 Python
两行代码解决Jupyter Notebook中文不能显示的问题
2021/04/24 Python
JS实现扫雷项目总结
2021/05/19 Javascript
如何使用PostgreSQL进行中文全文检索
2021/05/27 PostgreSQL