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 获取百度的热词数据的代码
Feb 18 PHP
php共享内存段示例分享
Jan 20 PHP
php中call_user_func函数使用注意事项
Nov 21 PHP
php中JSON的使用与转换
Jan 14 PHP
支持png透明图片的php生成缩略图类分享
Feb 08 PHP
PHP将session信息存储到数据库的类实例
Mar 04 PHP
PHP文件读取功能的应用实例
May 08 PHP
php计算税后工资的方法
Jul 28 PHP
php添加数据到xml文件的简单例子
Sep 08 PHP
php微信公众平台开发(一) 配置接口
Dec 06 PHP
yii2 在控制器中验证请求参数的使用方法
Jun 19 PHP
PHP使用HTML5 FileApi实现Ajax上传文件功能示例
Jul 01 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
改德生G88 - 加装等响度低音提升电路
2021/03/02 无线电
我常用的几个类
2006/10/09 PHP
DedeCMS dede_channeltype表字段注释
2010/04/07 PHP
PHP封装的Twitter访问类实例
2015/07/18 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
2015/11/10 PHP
PHP正则匹配操作简单示例【preg_match_all应用】
2017/07/10 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
从URL中提取参数与将对象转换为URL查询参数的实现代码
2012/01/12 Javascript
JS模块与命名空间的介绍
2013/03/22 Javascript
jquery移动listbox的值原理及代码
2013/05/03 Javascript
JavaScript实现将文本框的值插入指定位置的方法
2015/08/13 Javascript
浅谈javascript的Touch事件
2015/09/27 Javascript
浅谈JS继承_寄生式继承 &amp; 寄生组合式继承
2016/08/16 Javascript
Angular2平滑升级到Angular4的步骤详解
2017/03/29 Javascript
nodejs前端自动化构建环境的搭建
2017/07/26 NodeJs
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
2017/08/22 Javascript
使用js实现将后台传入的json数据放在前台显示
2018/08/06 Javascript
vue主动刷新页面及列表数据删除后的刷新实例
2018/09/16 Javascript
基于vue的video播放器的实现示例
2021/02/19 Vue.js
[02:35]DOTA2超级联赛专访XB 难忘一年九冠称王
2013/06/20 DOTA
[02:48]DOTA2英雄基础教程 暗夜魔王
2013/12/12 DOTA
Python 实现opencv所使用的图片格式与 base64 转换
2020/01/09 Python
python中numpy数组与list相互转换实例方法
2021/01/29 Python
2014年大班元旦活动方案
2014/02/26 职场文书
毕业生学校推荐信范文
2014/05/21 职场文书
公司门卫岗位职责范本
2014/07/08 职场文书
违反单位工作制度检讨书
2014/10/25 职场文书
2014年班组长工作总结
2014/11/20 职场文书
世界环境日活动总结
2015/02/11 职场文书
高中家长意见怎么写
2015/06/03 职场文书
政审证明范文
2015/06/19 职场文书
运动会加油稿
2015/07/22 职场文书
2016年优秀共产党员先进事迹材料
2016/02/29 职场文书
go 原生http web 服务跨域restful api的写法介绍
2021/04/27 Golang
Python pandas之求和运算和非空值个数统计
2021/08/07 Python
使用CSS实现小三角边框原理解析
2021/11/07 HTML / CSS