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的日期处理函数及uchome的function_coomon中日期处理函数的研究
Jan 12 PHP
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
Jun 13 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
Jan 06 PHP
分割GBK中文遭遇乱码的解决方法
Aug 09 PHP
php使用数组填充下拉列表框的方法
Mar 31 PHP
PHP实现的购物车类实例
Jun 17 PHP
thinkphp微信开发(消息加密解密)
Dec 02 PHP
PHP实现随机生成水印图片功能
Mar 22 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
Feb 07 PHP
php微信支付之公众号支付功能
May 30 PHP
PHP自动载入类文件函数__autoload的使用方法
Mar 25 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
Mar 24 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
一拳超人中怪人协会钦定! S级别最强四人!
2020/03/02 日漫
PHP网上调查系统
2006/10/09 PHP
escape unescape的php下的实现方法
2007/04/27 PHP
php根据身份证号码计算年龄的实例代码
2014/01/18 PHP
PHP数组函数知识汇总
2016/05/12 PHP
PHP中set_include_path()函数相关用法分析
2016/07/18 PHP
Yii支持多域名cors原理的实现
2018/12/05 PHP
Laravel开启跨域请求的方法
2019/10/13 PHP
laravel返回统一格式错误码问题
2019/11/04 PHP
jQuery AJAX 调用WebService实现代码
2010/03/24 Javascript
JavaScript中去掉数组中的重复值的实现方法
2011/08/03 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
使用console进行性能测试
2015/04/27 Javascript
js事件冒泡与事件捕获详解
2017/02/20 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
koa源码中promise的解读
2018/11/13 Javascript
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
vue递归组件实战之简单树形控件实例代码
2019/08/27 Javascript
Vue 自定义指令实现一键 Copy功能
2019/09/16 Javascript
Vue.js watch监视属性知识点总结
2019/11/11 Javascript
[02:40]DOTA2英雄基础教程 先知
2013/11/29 DOTA
python 生成目录树及显示文件大小的代码
2009/07/23 Python
Python Sql数据库增删改查操作简单封装
2016/04/18 Python
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
2017/02/13 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
2018/05/30 Python
使用Python读取二进制文件的实例讲解
2018/07/09 Python
使用Django连接Mysql数据库步骤
2019/01/15 Python
PyCharm 设置SciView工具窗口的方法
2019/01/15 Python
浅谈python3中input输入的使用
2019/08/02 Python
Python日志打印里logging.getLogger源码分析详解
2021/01/17 Python
用css3制作纸张效果(外翻卷角)
2013/02/01 HTML / CSS
年终总结会议主持词
2014/03/17 职场文书
员工安全承诺书
2014/05/22 职场文书
2015年学校政教处工作总结
2015/05/26 职场文书
小学生纪律委员竞选稿
2015/11/19 职场文书
机关单位2016年法制宣传日活动总结
2016/04/01 职场文书