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
Windows PHP5和Apache的安装与配置
Jun 08 PHP
php调用mysql数据 dbclass类
May 07 PHP
php模拟socket一次连接,多次发送数据的实现代码
Jul 26 PHP
解析php中static,const与define的使用区别
Jun 18 PHP
浅析PHP编程中10个最常见的错误
Aug 08 PHP
PHP向浏览器输出内容的4个函数总结
Nov 17 PHP
支持png透明图片的php生成缩略图类分享
Feb 08 PHP
浅谈PHP中try{}catch{}的使用方法
Dec 09 PHP
PHP+JavaScript实现无刷新上传图片
Feb 21 PHP
php实现查询功能(数据访问)
May 23 PHP
thinkPHP微信分享接口JSSDK用法实例
Jul 07 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中create table语句的基本语法是
2007/01/15 PHP
php实现俄罗斯乘法实例
2015/03/07 PHP
Yii视图操作之自定义分页实现方法
2016/07/14 PHP
PHP简单实现数字分页功能示例
2016/08/24 PHP
Json对象替换字符串占位符实现代码
2010/11/17 Javascript
javascript 中String.match()与RegExp.exec()的区别说明
2013/01/10 Javascript
JavaScript打印iframe内容示例代码
2013/08/20 Javascript
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
jQuery基于扩展简单实现倒计时功能的方法
2016/05/14 Javascript
基于Vue.js实现数字拼图游戏
2016/08/02 Javascript
JS之获取样式的简单实现方法(推荐)
2016/09/13 Javascript
JavaScript 栈的详解及实例代码
2017/01/22 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
2017/02/13 Javascript
JS实现最简单的冒泡排序算法
2017/02/15 Javascript
深入理解Angular4订阅(Subscribe)与取消
2017/11/22 Javascript
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
2018/01/25 jQuery
面试题:react和vue的区别分析
2019/04/08 Javascript
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
Element-ui upload上传文件限制的解决方法
2021/01/22 Javascript
[02:10]三分钟回顾完美世界城市挑战赛
2019/01/24 DOTA
用Python输出一个杨辉三角的例子
2014/06/13 Python
Python 递归函数详解及实例
2016/12/27 Python
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
2018/05/29 Python
详解python中递归函数
2019/04/16 Python
Django连接数据库并实现读写分离过程解析
2019/11/13 Python
Python selenium抓取虎牙短视频代码实例
2020/03/02 Python
英国领先的瓷砖专家:Walls and Floors
2018/04/27 全球购物
英国美发和美容产品商城:HQhair
2019/02/08 全球购物
Lancer Skincare官方网站:抗衰老皮肤护理
2020/11/20 全球购物
招聘专员岗位职责
2014/03/07 职场文书
促销活动总结模板
2014/07/01 职场文书
航班延误投诉信
2015/07/02 职场文书
2015年大学迎新工作总结
2015/07/16 职场文书
2019西餐厅创业计划书范文!
2019/07/12 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript