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 相关文章推荐
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
Dec 06 PHP
PHP操作数组相关函数
Feb 03 PHP
PHP与MYSQL中UTF8编码的中文排序实例
Oct 21 PHP
php利用scws实现mysql全文搜索功能的方法
Dec 25 PHP
PHP+APACHE实现网址伪静态
Feb 22 PHP
PHP查找与搜索数组元素方法总结
Jun 12 PHP
详解WordPress中创建和添加过滤器的相关PHP函数
Dec 29 PHP
Symfony2实现在doctrine中内置数据的方法
Feb 05 PHP
PHP使用内置函数生成图片的方法详解
May 09 PHP
对PHP依赖注入的理解实例分析
Oct 09 PHP
php自定义截取中文字符串-utf8版
Feb 27 PHP
PHP编程计算日期间隔天数的方法
Apr 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
德劲1107的电路分析与打磨
2021/03/02 无线电
php addslashes和mysql_real_escape_string
2010/01/24 PHP
php编程实现获取excel文档内容的代码实例
2011/06/28 PHP
比较好用的PHP防注入漏洞过滤函数代码
2012/04/11 PHP
使用array mutisort 实现按某字段对数据排序
2013/06/18 PHP
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
php中json_encode UTF-8中文乱码的更好解决方法
2014/09/28 PHP
分享五个PHP7性能优化提升技巧
2015/12/07 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
2018/10/23 PHP
详解php命令注入攻击
2019/04/06 PHP
YII框架行为behaviors用法示例
2019/04/26 PHP
jquery Tab效果和动态加载的简单实例
2013/12/11 Javascript
告诉你什么是javascript的回调函数
2014/09/04 Javascript
js实现页面刷新滚动条位置不变
2016/11/27 Javascript
详解nodejs中的process进程
2017/03/19 NodeJs
深究AngularJS中ng-drag、ng-drop的用法
2017/06/12 Javascript
a标签调用js的方法总结
2019/09/05 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
[01:08]DOTA2次级职业联赛 - Wings 战队宣传片
2014/12/01 DOTA
[56:00]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第二场
2018/04/10 DOTA
以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法
2015/03/30 Python
基于scrapy实现的简单蜘蛛采集程序
2015/04/17 Python
Go/Python/Erlang编程语言对比分析及示例代码
2018/04/23 Python
浅谈python之新式类
2018/08/12 Python
详解Python logging调用Logger.info方法的处理过程
2019/02/12 Python
Python3 导入上级目录中的模块实例
2019/02/16 Python
django多对多表的创建,级联删除及手动创建第三张表
2019/07/25 Python
如何使用python操作vmware
2019/07/27 Python
西安启天科技有限公司网络工程师面试题笔试题
2016/06/12 面试题
钳工实习自我鉴定
2013/09/19 职场文书
教育学专业毕业生的自我鉴定
2013/11/26 职场文书
大学运动会通讯稿
2015/07/18 职场文书
python爬虫之爬取笔趣阁小说
2021/04/22 Python
win10下go mod配置方式
2021/04/25 Golang
Navicat for MySQL的使用教程详解
2021/05/27 MySQL