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 相关文章推荐
在数据量大(超过10万)的情况下
Jan 15 PHP
PHP+MySQL 手工注入语句大全 推荐
Oct 30 PHP
php实现mysql封装类示例
May 07 PHP
9个实用的PHP代码片段分享
Jan 22 PHP
php通过rmdir删除目录的简单用法
Mar 18 PHP
PHP中的魔术方法总结和使用实例
May 11 PHP
php ajax实现文件上传进度条
Mar 29 PHP
Laravel中log无法写入问题的解决
Jun 17 PHP
laravel5表单唯一验证的实例代码
Sep 30 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 PHP
php下的原生ajax请求用法实例分析
Feb 28 PHP
如何利用PHP实现上传图片功能详解
Sep 24 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
解决文件名解压后乱码的问题 将文件名进行转码的代码
2012/01/10 PHP
PHP批量生成图片缩略图的方法
2015/06/18 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
2016/03/18 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
javascript 中对象的继承〔转贴〕
2007/01/22 Javascript
js innerHTML 的一些问题的解决方法
2008/06/22 Javascript
javascript 学习笔记(一)DOM基本操作
2011/04/08 Javascript
基于jquery打造的百分比动态色彩条插件
2012/09/19 Javascript
js创建子窗口并且回传值示例代码
2013/07/02 Javascript
各浏览器对document.getElementById等方法的实现差异解析
2013/12/05 Javascript
node.js中使用socket.io的方法
2014/12/15 Javascript
node.js集成百度UE编辑器
2015/02/05 Javascript
javascript模拟命名空间
2015/04/17 Javascript
jQuery实现遍历复选框的方法示例
2017/03/06 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
使用async-validator编写Form组件的方法
2018/01/10 Javascript
jquery点击回车键实现登录效果并默认焦点的方法
2018/03/09 jQuery
使用Vue-cli 3.0搭建Vue项目的方法
2018/06/07 Javascript
Python 实现淘宝秒杀的示例代码
2018/01/02 Python
python微信跳一跳系列之色块轮廓定位棋盘
2018/02/26 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
2019/12/19 Python
python中查看.db文件中表格的名字及表格中的字段操作
2020/07/07 Python
Python文件夹批处理操作代码实例
2020/07/21 Python
MyFrenchPharma中文网:最大的法国药妆平台
2016/10/07 全球购物
丝芙兰波兰:Sephora.pl
2018/03/25 全球购物
如何通过jdbc调用存储过程
2012/04/19 面试题
销售工作岗位职责
2013/12/24 职场文书
大学四年个人的自我评价
2014/02/26 职场文书
《宿建德江》教学反思
2014/04/23 职场文书
2015年“我们的节日·中秋节”活动总结
2015/07/30 职场文书
小组口号霸气押韵
2015/12/24 职场文书
Canvas跟随鼠标炫彩小球的实现
2021/04/11 Javascript
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
2021/04/12 Python
java中重写父类方法加不加@Override详解
2021/06/21 Java/Android
mysql备份策略的实现(全量备份+增量备份)
2021/07/07 MySQL
TypeScript 使用 Tuple Union 声明函数重载
2022/04/07 Javascript