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 相关文章推荐
详细介绍:Apache+PHP+MySQL配置攻略
Sep 05 PHP
MYSQL数据库初学者使用指南
Nov 16 PHP
memcached 和 mysql 主从环境下php开发代码详解
May 16 PHP
php实现查询百度google收录情况(示例代码)
Aug 02 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
Aug 11 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
Nov 24 PHP
使用PHP实现生成HTML静态页面
Nov 18 PHP
php curl模拟post请求和提交多维数组的示例代码
Nov 19 PHP
PHP CURL post数据报错 failed creating formpost data
Oct 16 PHP
PHP文件操作详解
Dec 30 PHP
PHP中Cookie的使用详解(简单易懂)
Apr 28 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
Dec 06 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序列号生成函数和字符串替换函数代码
2012/06/07 PHP
PHP 验证码不显示只有一个小红叉的解决方法
2013/09/30 PHP
yii2.0实现pathinfo的形式访问的配置方法
2016/04/06 PHP
PHP封装的PDO数据库操作类实例
2017/06/21 PHP
IOS 开发之NSDictionary转换成JSON字符串
2017/08/14 PHP
PHP __call()方法实现委托示例
2019/05/20 PHP
PHP实现发送微博消息功能完整示例
2019/12/04 PHP
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
2007/05/08 Javascript
javascript的onchange事件与jQuery的change()方法比较
2009/09/28 Javascript
javascript innerHTML使用分析
2010/12/03 Javascript
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
2012/12/15 Javascript
Jquery绑定事件(bind和live的区别介绍)
2013/08/23 Javascript
js与运算符和或运算符的妙用
2014/02/14 Javascript
jquery复选框checkbox实现删除前判断
2014/04/20 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
JavaScript数组去重的五种方法
2015/11/05 Javascript
JS中正则表达式全局匹配模式 /g用法详解
2017/04/01 Javascript
[00:48]DOTA2国际邀请赛公开赛报名开始 扫码开启逐梦之旅
2018/06/06 DOTA
python实现五子棋人机对战游戏
2020/03/25 Python
python的一些加密方法及python 加密模块
2019/07/11 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
2020/04/01 Python
python使用列表的最佳方案
2020/08/12 Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
2020/09/30 Python
Python基于内置函数type创建新类型
2020/10/22 Python
静态成员和非静态成员的区别
2012/05/12 面试题
网络宣传方案
2014/03/15 职场文书
班级年度安全计划书
2014/05/01 职场文书
纪律教育学习心得体会
2014/09/02 职场文书
青春飞扬演讲稿
2014/09/11 职场文书
小学生五年级大队长竞选发言稿
2014/09/12 职场文书
2014年大学学生会工作总结
2014/12/02 职场文书
评职称个人总结
2015/03/05 职场文书
实习推荐信格式模板
2015/03/27 职场文书
乔迁新居祝福语
2019/11/04 职场文书
python随机打印成绩排名表
2021/06/23 Python