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 读取文件的正确方法
Apr 29 PHP
php读取html并截取字符串的简单代码
Nov 30 PHP
php 操作excel文件的方法小结
Dec 31 PHP
PHP的SQL注入实现(测试代码安全不错)
Feb 27 PHP
比file_get_contents稳定的curl_get_contents分享
Jan 11 PHP
php调用google接口生成二维码示例
Apr 28 PHP
ThinkPHP中关联查询实例
Dec 02 PHP
php简单实现多字节字符串翻转的方法
Mar 31 PHP
Codeigniter控制器controller继承问题实例分析
Jan 19 PHP
THINKPHP3.2使用soap连接webservice的解决方法
Dec 13 PHP
实例讲解PHP验证邮箱是否合格
Jan 28 PHP
PHP生成随机密码4种方法及性能对比
Dec 11 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数组合并array_merge()函数使用注意事项
2014/06/19 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
2019/03/22 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
直接生成打开窗口代码,不必下载
2008/05/14 Javascript
JavaScript 使用技巧精萃(.net html
2009/04/25 Javascript
javascript 全选与全取消功能的实现代码
2012/12/23 Javascript
利用jQuery实现可以编辑的表格
2014/05/26 Javascript
AngularJS基础 ng-keyup 指令简单示例
2016/08/02 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
2016/08/18 Javascript
jQuery在header中设置请求信息的方法
2017/03/06 Javascript
简单实现js点击展开二级菜单功能
2017/05/16 Javascript
JQuery Ajax 异步操作之动态添加节点功能
2017/05/24 jQuery
js构造函数创建对象是否加new问题
2018/01/22 Javascript
Angular2中监听数据更新的方法
2018/08/31 Javascript
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
使用 Vue 实现一个虚拟列表的方法
2019/08/20 Javascript
多页vue应用的单页面打包方法(内含打包模式的应用)
2020/06/11 Javascript
javascript实现电商放大镜效果
2020/11/23 Javascript
浅析Python中signal包的使用
2015/11/13 Python
python如何让类支持比较运算
2018/03/20 Python
Python中GIL的使用详解
2018/10/03 Python
python上selenium的弹框操作实现
2020/07/13 Python
浅析HTML5中header标签的用法
2016/06/24 HTML / CSS
GetYourGuide台湾:预订旅游活动、景点和旅游项目
2019/06/10 全球购物
编写用C语言实现的求n阶阶乘问题的递归算法
2014/10/21 面试题
复核员上岗演讲稿
2014/01/05 职场文书
出纳员岗位责任制
2014/02/11 职场文书
十八届三中全会个人学习材料
2014/02/13 职场文书
《听鱼说话》教学反思
2014/02/15 职场文书
歌唱比赛策划方案
2014/06/06 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
2014年乡镇人大工作总结
2014/11/25 职场文书
单位考核聘任报告
2015/03/02 职场文书
2015年保洁员工作总结
2015/05/04 职场文书
婚礼家长致辞
2015/07/27 职场文书
Python开发简易五子棋小游戏
2022/05/02 Python