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 相关文章推荐
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
Dec 29 PHP
如何设置mysql允许外网访问
Jun 04 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
Aug 15 PHP
CodeIgniter使用phpcms模板引擎
Nov 12 PHP
php 发送带附件邮件示例
Jan 23 PHP
PHP实现取得HTTP请求的原文
Aug 18 PHP
Symfony页面的基本创建实例详解
Jan 26 PHP
php中switch语句用法详解
Aug 17 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
Jun 30 PHP
php投票系统之增加与删除投票(管理员篇)
Jul 01 PHP
php实现的顺序线性表示例
May 04 PHP
php正则表达式使用方法整理集合
Jan 31 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
中国第一家无线电行
2021/03/01 无线电
php中判断数组是一维,二维,还是多维的解决方法
2013/05/04 PHP
PHP设计模式之结构模式的深入解析
2013/06/13 PHP
PHP延迟静态绑定示例分享
2014/06/22 PHP
33种Javascript 表格排序控件收集
2009/12/03 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
2013/03/19 Javascript
点击隐藏页面左栏或右栏实现js代码
2013/04/01 Javascript
jquery如何把数组变为字符串传到服务端并处理
2014/04/30 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
2014/08/11 Javascript
javascript二维数组转置实例
2015/01/22 Javascript
JS实现动态给图片添加边框的方法
2015/04/01 Javascript
使用jQuery操作HTML的table表格的实例解析
2016/03/13 Javascript
JS实现不用中间变量temp 实现两个变量值得交换方法
2018/02/04 Javascript
mpvue性能优化实战技巧(小结)
2019/04/17 Javascript
Python编码爬坑指南(必看)
2016/06/10 Python
浅谈Python 字符串格式化输出(format/printf)
2016/07/21 Python
python将处理好的图像保存到指定目录下的方法
2019/01/10 Python
python实现月食效果实例代码
2019/06/18 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
解决导入django_filters不成功问题No module named 'django_filter'
2020/07/15 Python
Python+kivy BoxLayout布局示例代码详解
2020/12/28 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
档案信息化建设方案
2014/05/16 职场文书
法学专业毕业生自荐信
2014/06/11 职场文书
竞选学习委员演讲稿
2014/09/01 职场文书
校园安全广播稿范文
2014/09/25 职场文书
公司奖励通知
2015/04/21 职场文书
2015年反洗钱工作总结
2015/04/25 职场文书
拾金不昧通报表扬范文
2015/05/05 职场文书
公司欠款证明
2015/06/24 职场文书
2016年党风廉政建设承诺书
2016/03/25 职场文书
MySQL的Query Cache图文详解
2021/07/01 MySQL
Canvas如何做个雪花屏版404的实现
2021/09/25 HTML / CSS