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横向重复区域显示二法
Sep 25 PHP
php Rename 更改文件、文件夹名称
May 24 PHP
PHP递归返回值时出现的问题解决办法
Feb 19 PHP
PHP递归删除目录几个代码实例
Apr 21 PHP
Yii实现MySQL多数据库和读写分离实例分析
Dec 03 PHP
php解析http获取的json字符串变量总是空白null
Mar 02 PHP
php中实现可以返回多个值的函数实例
Mar 21 PHP
Yii2实现ajax上传图片插件用法
Apr 28 PHP
PHP中文字符串截断无乱码解决方法
Oct 10 PHP
Python中使用django form表单验证的方法
Jan 16 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
Jul 19 PHP
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
Mar 14 PHP
PHP简单实现循环链表功能示例
Nov 10 #PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
Nov 08 #PHP
php基于环形链表解决约瑟夫环问题示例
Nov 07 #PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
Nov 07 #PHP
PHP基于回溯算法解决n皇后问题的方法示例
Nov 07 #PHP
php实现的三个常用加密解密功能函数示例
Nov 06 #PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
Nov 06 #PHP
You might like
如何开始收听短波广播
2021/03/01 无线电
利用PHP动态生成VRML网页
2006/10/09 PHP
php $_SERVER当前完整url的写法
2009/11/12 PHP
php采用curl模仿登录人人网发布动态的方法
2014/11/07 PHP
在WordPress的文章编辑器中设置默认内容的方法
2015/12/29 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
2017/02/18 PHP
php读取本地json文件的实例
2018/03/07 PHP
PHP实现普通hash分布式算法简单示例
2018/08/06 PHP
php PDO属性设置与操作方法分析
2018/12/27 PHP
xml分页+ajax请求数据源+dom取结果实例代码
2008/10/31 Javascript
一个判断email合法性的函数[非正则]
2008/12/09 Javascript
ExtJS TabPanel beforeremove beforeclose使用说明
2010/03/31 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
基于BootStrap Metronic开发框架经验小结【三】下拉列表Select2插件的使用
2016/05/12 Javascript
jQuery中的on与bind绑定事件区别实例详解
2017/02/28 Javascript
微信小程序 页面传值详解
2017/03/10 Javascript
Vue2.0 多 Tab切换组件的封装实例
2017/07/28 Javascript
Vue自定义指令详解
2017/07/28 Javascript
解决IE7中使用jQuery动态操作name问题
2017/08/28 jQuery
微信小程序页面生命周期详解
2018/01/31 Javascript
微信小程序日期时间选择器使用方法
2018/02/01 Javascript
微信小程序 WXML节点信息查询详解
2019/07/29 Javascript
Javascript原生ajax请求代码实例
2020/02/20 Javascript
[07:38]2014DOTA2国际邀请赛 Newbee顺利挺进胜者组赛后专访
2014/07/15 DOTA
python中的对象拷贝示例 python引用传递
2014/01/23 Python
Python3中的列表,元组,字典,字符串相关知识小结
2017/11/10 Python
Python基础类继承重写实现原理解析
2020/04/03 Python
浅谈Python中的模块
2020/06/10 Python
使用Python实现NBA球员数据查询小程序功能
2020/11/09 Python
实例讲解使用SVG制作loading加载动画的方法
2016/04/05 HTML / CSS
外贸英语毕业生自荐信
2013/11/14 职场文书
党员干部廉政承诺书
2015/04/28 职场文书
外出学习心得体会范文
2016/01/18 职场文书
奖学金申请书(范文)
2019/08/14 职场文书
解决xampp安装后Apache无法启动
2022/03/21 Servers