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 相关文章推荐
教你如何把一篇文章按要求分段
Oct 09 PHP
php 传值赋值与引用赋值的区别
Dec 29 PHP
PHP中$_FILES的使用方法及注意事项说明
Feb 14 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
Sep 10 PHP
PHP中的socket_read和socket_recv区别详解
Feb 09 PHP
php中smarty实现多模版网站的方法
Jun 11 PHP
PHP常见漏洞攻击分析
Feb 21 PHP
PHP的mysqli_stmt_init()函数讲解
Jan 24 PHP
php微信分享到朋友圈、QQ、朋友、微博
Feb 18 PHP
Laravel5.1 框架响应基本用法实例分析
Jan 04 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
May 15 PHP
PHP 裁剪图片
Mar 09 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
table标签的结构与合并单元格的实现方法
2013/07/24 PHP
php读取mysql的简单实例
2014/01/15 PHP
在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析
2016/03/06 PHP
jQuery+php简单实现全选删除的方法
2016/11/28 PHP
js获取单选按钮的数据
2006/11/27 Javascript
Jquery读取URL参数小例子
2013/08/30 Javascript
前台js对象在后台转化java对象的问题探讨
2013/12/20 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
2015/08/21 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
mac下的nodejs环境安装的步骤
2017/05/24 NodeJs
AngularJS 购物车全选/取消全选功能的实现方法
2017/08/14 Javascript
javascript深拷贝、浅拷贝和循环引用深入理解
2018/05/27 Javascript
JS实现获取毫秒值及转换成年月日时分秒的方法
2018/08/15 Javascript
详解微信小程序与内嵌网页交互实现支付功能
2018/10/22 Javascript
layui type2 通过url给iframe子页面传值的例子
2019/09/06 Javascript
AJAX XMLHttpRequest对象创建使用详解
2020/08/20 Javascript
[47:22]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python在windows和linux下获得本机本地ip地址方法小结
2015/03/20 Python
python操作ssh实现服务器日志下载的方法
2015/06/03 Python
Python聚类算法之DBSACN实例分析
2015/11/20 Python
python实现猜单词小游戏
2020/05/22 Python
python web框架中实现原生分页
2019/09/08 Python
Pytorch自己加载单通道图片用作数据集训练的实例
2020/01/18 Python
Python3变量与基本数据类型用法实例分析
2020/02/14 Python
什么是python类属性
2020/06/10 Python
深入研究HTML5实现图片压缩上传功能
2016/03/25 HTML / CSS
一家外企的面试题目(C/C++面试题,C语言面试题)
2014/03/24 面试题
销售主管岗位职责范本
2014/02/14 职场文书
假面舞会策划方案
2014/05/29 职场文书
领导班子民主生活会整改措施(工商局)
2014/09/21 职场文书
化验员岗位职责
2015/02/14 职场文书
求职推荐信范文
2015/03/27 职场文书
工作简报怎么写
2015/07/21 职场文书
合同补充协议书
2016/03/24 职场文书
检讨书格式
2019/04/25 职场文书
oracle通过存储过程上传list保存功能
2021/05/12 Oracle