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 数组使用详解 推荐
Jun 02 PHP
php利用新浪接口查询ip获取地理位置示例
Jan 20 PHP
destoon实现公司新闻详细页添加评论功能的方法
Jul 15 PHP
php中注册器模式类用法实例分析
Nov 03 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
Jun 13 PHP
PHP 接入支付宝即时到账功能
Sep 18 PHP
php的4种常用运行方式详解
Dec 22 PHP
php实现数组中出现次数超过一半的数字的统计方法
Oct 14 PHP
php判断电子邮件是否正确方法
Dec 04 PHP
php5.6.x到php7.0.x特性小结
Aug 17 PHP
php探针使用原理和技巧讲解
Sep 17 PHP
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
Apr 01 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
使用 MySQL Date/Time 类型
2008/03/26 PHP
php 求质素(素数) 的实现代码
2011/04/12 PHP
PHP的博客ping服务代码
2012/02/04 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
2015/12/22 PHP
yii,CI,yaf框架+smarty模板使用方法
2015/12/29 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
2020/04/23 PHP
javascript delete 使用示例代码
2010/03/29 Javascript
图片上传判断及预览脚本的效果实例
2013/08/07 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2014/09/04 Javascript
jquery.validate使用详解
2016/06/02 Javascript
基于jQuery实现的打字机效果
2017/01/16 Javascript
深入理解vue Render函数
2017/07/19 Javascript
jQuery选择器之子元素过滤选择器
2017/09/28 jQuery
三步实现ionic3点击退出app程序
2019/09/17 Javascript
JavaScript的console命令使用实例
2019/12/03 Javascript
详解JavaScript 高阶函数
2020/09/14 Javascript
vue组件是如何解析及渲染的?
2021/01/13 Vue.js
约瑟夫问题的Python和C++求解方法
2015/08/20 Python
浅谈Python数据类型判断及列表脚本操作
2016/11/04 Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
2017/04/11 Python
PyCharm在win10的64位系统安装实例
2017/11/26 Python
Python实现的读写json文件功能示例
2018/06/05 Python
Python实现将通信达.day文件读取为DataFrame
2018/12/22 Python
python如何保证输入键入数字的方法
2019/08/23 Python
python3 求约数的实例
2019/12/05 Python
浅谈Python中的生成器和迭代器
2020/06/19 Python
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
Kusmi茶美国官网:优质散叶茶和茶包
2019/10/13 全球购物
某IT外企面试题-二分法求方程!看看大家的C++功底
2015/07/04 面试题
初中高效课堂实施方案
2014/02/26 职场文书
岗位说明书范文
2014/05/07 职场文书
延安红色之旅心得体会
2014/10/07 职场文书
公司领导班子召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
签证工作证明模板
2015/06/15 职场文书
MySQL外键约束(Foreign Key)案例详解
2022/06/28 MySQL
win10电脑右下角输入法图标不见了?Win10右下角不显示输入法的解决方法
2022/07/23 数码科技