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和XSL stylesheets转换XML文档
Oct 09 PHP
初学CAKEPHP 基础教程
Nov 02 PHP
PHP 存储文本换行实现方法
Jan 05 PHP
PHP 学习路线与时间表
Feb 21 PHP
PHP计划任务、定时执行任务的实现代码
Apr 23 PHP
用Simple Excel导出xls实现方法
Dec 06 PHP
curl实现站外采集的方法和技巧
Jan 31 PHP
PHP中static关键字以及与self关键字的区别
Jul 01 PHP
基于php判断客户端类型
Oct 14 PHP
Yii2第三方类库插件Imagine的安装和使用
Jul 06 PHP
PHP Laravel中的Trait使用方法
Jan 20 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
Jul 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
php基础知识:类与对象(4) 范围解析操作符(::)
2006/12/13 PHP
php后台程序与Javascript的两种交互方式
2009/10/25 PHP
第三章 php操作符与控制结构代码
2011/12/30 PHP
php实现多张图片上传加水印技巧
2013/04/18 PHP
PHP实现文件上传和多文件上传
2015/12/24 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
共享自己写一个框架DreamScript
2007/01/20 Javascript
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
2007/04/01 Javascript
火狐浏览器(firefox)下获得Event对象以及keyCode
2008/11/13 Javascript
基于jQuery的获得各种控件Value的方法
2010/11/19 Javascript
Shell脚本实现Linux系统和进程资源监控
2015/03/05 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
为什么JavaScript没有块级作用域
2016/05/22 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
详解Vue方法与事件
2017/03/09 Javascript
[10:21]2018DOTA2国际邀请赛寻真——Winstrike
2018/08/11 DOTA
python表格存取的方法
2018/03/07 Python
用python编写第一个IDA插件的实例
2018/05/29 Python
对Python3+gdal 读取tiff格式数据的实例讲解
2018/12/04 Python
PyQt5 多窗口连接实例
2019/06/19 Python
Python如何实现转换URL详解
2019/07/02 Python
django rest framework serializers序列化实例
2020/05/13 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
在pycharm创建scrapy项目的实现步骤
2020/12/01 Python
html5 学习简单的拾色器
2010/09/03 HTML / CSS
英国顶级家庭折扣店:The Works
2017/09/06 全球购物
公司财务总监岗位职责
2013/12/14 职场文书
大学生职业生涯规划范文
2014/01/08 职场文书
社区党员先进事迹
2014/01/22 职场文书
迟到检讨书500字
2014/02/05 职场文书
进步之星获奖感言
2014/02/22 职场文书
解约证明模板
2015/06/19 职场文书
小学生暑假安全保证书
2015/07/13 职场文书
化工生产实习心得体会
2016/01/22 职场文书
导游词之鲁迅祖居
2019/10/17 职场文书
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android