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 cookie 登录验证示例代码
Mar 16 PHP
php的ajax框架xajax入门与试用介绍
Dec 19 PHP
php防止sql注入代码实例
Dec 18 PHP
PHP 二维数组根据某个字段排序的具体实现
Jun 03 PHP
ThinkPHP中的常用查询语言汇总
Aug 22 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
Jan 05 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
Nov 25 PHP
laravel 中如何使用ajax和vue总结
Aug 16 PHP
PHP设计模式之单例模式原理与实现方法分析
Apr 25 PHP
PHP实现的AES加密、解密封装类与用法示例
Aug 02 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
Apr 02 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
php调用C代码的实现方法
2014/03/11 PHP
php实现paypal 授权登录
2015/05/28 PHP
php生成无限栏目树
2017/03/16 PHP
音乐播放用的的几个函数
2006/09/07 Javascript
Jquery Ajax请求代码(2)
2011/01/07 Javascript
映彩衣的js随笔(js图片切换效果)
2011/07/31 Javascript
javascript函数式编程实例分析
2015/04/25 Javascript
jquery实现选中单选按钮下拉伸缩效果
2015/08/06 Javascript
jquery中cookie用法实例详解(获取,存储,删除等)
2016/01/04 Javascript
JavaScript设计模式经典之工厂模式
2016/02/24 Javascript
JavaScript接口的实现三种方式(推荐)
2016/06/14 Javascript
angular2+nodejs实现图片上传功能
2017/03/27 NodeJs
完美解决linux下node.js全局模块找不到的情况
2018/05/16 Javascript
微信小程序上传图片实例
2018/05/28 Javascript
13 个npm 快速开发技巧(推荐)
2019/07/04 Javascript
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
微信小程序点击view动态添加样式过程解析
2020/01/21 Javascript
[01:21]DOTA2 新英雄 森海飞霞
2020/12/18 DOTA
使用Python开发windows GUI程序入门实例
2014/10/23 Python
Python自动化构建工具scons使用入门笔记
2015/03/10 Python
在Django中编写模版节点及注册标签的方法
2015/07/20 Python
老生常谈python函数参数的区别(必看篇)
2017/05/29 Python
TensorFlow实现创建分类器
2018/02/06 Python
HTML5资源预加载(Link prefetch)详细介绍(给你的网页加速)
2014/05/07 HTML / CSS
德国婴儿推车和儿童安全座椅商店:BABYSHOP
2016/09/01 全球购物
泰国演唱会订票网站:StubHub泰国
2018/02/26 全球购物
实体的生命周期
2013/08/31 面试题
我的求职择业计划书
2014/04/04 职场文书
学校春季防火方案
2014/06/08 职场文书
住院医师规范化培训实施方案
2014/06/12 职场文书
学习实践科学发展观心得体会
2014/09/10 职场文书
领导班子四风问题个人对照检查材料
2014/10/04 职场文书
群众路线党员个人剖析材料
2014/10/08 职场文书
考试没考好检讨书(精选篇)
2014/11/16 职场文书
2015年公司新年寄语
2014/12/08 职场文书
中学生勤俭节约倡议书
2015/04/29 职场文书