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 相关文章推荐
3.从实例开始
Oct 09 PHP
php对gzip文件或者字符串解压实例参考
Jul 25 PHP
解决file_get_contents无法请求https连接的方法
Dec 17 PHP
phpexcel导入excel数据使用方法实例
Dec 24 PHP
PHP抓屏函数实现屏幕快照代码分享
Jan 02 PHP
php获得网站访问统计信息类Compete API用法实例
Apr 02 PHP
Yii CFileCache 获取不到值的原因分析
Feb 08 PHP
Yii2实现UploadedFile上传文件示例
Feb 15 PHP
PHP操作MongoDB实现增删改查功能【附php7操作MongoDB方法】
Apr 24 PHP
php获得刚插入数据的id 的几种方法总结
May 31 PHP
PHP回调函数简单用法示例
May 08 PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
Aug 26 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
如何使用php输出时间格式
2013/08/31 PHP
PHP中使用gettext解决国际化问题的例子(i18n)
2014/06/13 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
PHP实现的简单排列组合算法应用示例
2017/06/20 PHP
THINKPHP5.1 Config的配置与获取详解
2020/06/08 PHP
SyntaxHighlighter代码加色使用方法
2008/09/07 Javascript
优化javascript的执行速度
2010/01/23 Javascript
jQuery源码分析-04 选择器-Sizzle-工作原理分析
2011/11/14 Javascript
JS获取图片实际宽高及根据图片大小进行自适应
2013/08/11 Javascript
js实现的map方法示例代码
2014/01/13 Javascript
jQuery html()方法使用不了无法显示内容的问题
2014/08/06 Javascript
JavaScript中的普通函数与构造函数比较
2015/04/07 Javascript
jQuery+Ajax实现无刷新操作
2016/01/04 Javascript
js确认框confirm()用法实例详解
2016/01/07 Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
2016/06/12 Javascript
javascript学习笔记_浅谈基础语法,类型,变量
2016/09/19 Javascript
js实现无缝滚动图(可控制当前滚动的方向)
2017/02/22 Javascript
微信小程序如何通过用户授权获取手机号(getPhoneNumber)
2020/01/21 Javascript
vant中的toast轻提示实现代码
2020/11/04 Javascript
[03:55]DOTA2完美大师赛选手传记——LFY.MONET
2017/11/18 DOTA
python制作小说爬虫实录
2017/08/14 Python
Python利用ElementTree模块处理XML的方法详解
2017/08/31 Python
速记Python布尔值
2017/11/09 Python
numpy.where() 用法详解
2019/05/27 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
2019/09/18 Python
基于Python快速处理PDF表格数据
2020/06/03 Python
python软件都是免费的吗
2020/06/18 Python
使用Python下载抖音各大V视频的思路详解
2021/02/06 Python
CSS3制作酷炫的三维相册效果
2016/07/01 HTML / CSS
html5适合移动应用开发的12大特性
2014/03/19 HTML / CSS
《登鹳雀楼》教学反思
2014/04/09 职场文书
自愿解除劳动合同协议书
2014/09/11 职场文书
三好生演讲稿
2014/09/12 职场文书
乡镇司法所2015年度工作总结
2015/10/14 职场文书
css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效
2021/04/29 HTML / CSS
Nginx 匹配方式
2022/05/15 Servers