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 分页类实现代码
Dec 03 PHP
PHPMYADMIN 简明安装教程 推荐
Mar 07 PHP
php读取javascript设置的cookies的代码
Apr 12 PHP
重新封装zend_soap实现http连接安全认证的php代码
Jan 12 PHP
php对数组排序代码分享
Feb 24 PHP
php rsa加密解密使用详解
Jan 14 PHP
php设置页面超时时间解决方法
Sep 22 PHP
php上传图片获取路径及给表单字段赋值的方法
Jan 23 PHP
Composer设置忽略版本匹配的方法
Apr 27 PHP
php 基础函数
Feb 10 PHP
PHP+Redis开发的书签案例实战详解
Jul 09 PHP
Yii框架常见缓存应用实例小结
Sep 09 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 解决utf-8和gb2312编码转换问题
2010/03/18 PHP
基于php设计模式中工厂模式详细介绍
2013/05/15 PHP
php图片的二进制转换实现方法
2014/12/15 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
2016/05/13 PHP
PHP Laravel 上传图片、文件等类封装
2017/08/16 PHP
PHP的mysqli_rollback()函数讲解
2019/01/23 PHP
Javascript Cookie读写删除操作的函数
2010/03/02 Javascript
JS实现文字放大效果的方法
2015/03/03 Javascript
JS拖拽插件实现步骤
2015/08/03 Javascript
jquery实现图片上传前本地预览功能
2016/05/10 Javascript
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
解决Layui数据表格中checkbox位置不居中的方法
2018/08/15 Javascript
vue.js层叠轮播效果的实例代码
2018/11/08 Javascript
jquery实现商品sku多属性选择功能(商品详情页)
2019/12/20 jQuery
微信小程序如何通过用户授权获取手机号(getPhoneNumber)
2020/01/21 Javascript
JavaScript动画实例之粒子文本的实现方法详解
2020/07/28 Javascript
在Python的Tornado框架中实现简单的在线代理的教程
2015/05/02 Python
Python3读取UTF-8文件及统计文件行数的方法
2015/05/22 Python
Python内建数据结构详解
2016/02/03 Python
从局部变量和全局变量开始全面解析Python中变量的作用域
2016/06/16 Python
Python实现字典(dict)的迭代操作示例
2018/06/05 Python
基于tensorflow加载部分层的方法
2018/07/26 Python
基于python实现简单日历
2018/07/28 Python
django的auth认证,authenticate和装饰器功能详解
2019/07/25 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
python颜色随机生成器的实例代码
2020/01/10 Python
python打包生成so文件的实现
2020/10/30 Python
HTML5之SVG 2D入门4—笔画与填充
2013/01/30 HTML / CSS
html5定位获取当前位置并在百度地图上显示
2014/08/22 HTML / CSS
面向对象设计的原则是什么
2013/02/13 面试题
消防安全检查制度
2014/02/04 职场文书
新闻发布会策划方案
2014/06/12 职场文书
关于社会实践的心得体会(2016最新版)
2016/01/25 职场文书
浅谈MySQL之select优化方案
2021/08/07 MySQL
Docker 镜像介绍以及commit相关操作
2022/04/13 Servers