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 相关文章推荐
中国站长站 For Dede4.0 采集规则
May 27 PHP
php之对抗Web扫描器的脚本技巧
Oct 01 PHP
PHP 截取字符串 分别适合GB2312和UTF8编码情况
Feb 12 PHP
用PHP查询搜索引擎排名位置的代码
Jan 05 PHP
PHP无限分类(树形类)的深入分析
Jun 02 PHP
mac下安装nginx和php
Nov 04 PHP
PHP遍历文件夹与文件类及处理类用法实例
Sep 23 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
Jul 13 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
Sep 23 PHP
PHP对象、模式与实践之高级特性分析
Dec 08 PHP
Swoole4.4协程抢占式调度器详解
May 23 PHP
php layui实现前端多图上传实例
Jul 30 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
用php获取本周,上周,本月,上月,本季度日期的代码
2009/08/05 PHP
探讨:如何使用PhpDocumentor生成文档
2013/06/25 PHP
各种快递查询--Api接口
2016/04/26 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
2016/12/07 PHP
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
DOM和XMLHttpRequest对象的属性和方法整理
2012/01/04 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
JS+CSS实现带关闭按钮DIV弹出窗口的方法
2015/02/27 Javascript
js淡入淡出的图片轮播效果代码分享
2015/08/24 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
详解AngularJS中module模块的导入导出
2015/12/10 Javascript
bootstrap css样式之表单
2017/01/19 Javascript
layui弹出层效果实现代码
2017/05/19 Javascript
微信小程序使用wxParse解析html的方法教程
2018/07/06 Javascript
浅谈从React渲染流程分析Diff算法
2018/09/08 Javascript
在Web关闭页面时发送Ajax请求的实现方法
2019/03/07 Javascript
layui 数据表格 点击分页按钮 监听事件的实例
2019/09/02 Javascript
layui 富文本编辑器和textarea值的相互传递方法
2019/09/18 Javascript
云服务器部署Node.js项目的方法步骤(小白系列)
2020/03/23 Javascript
vue路由的配置和页面切换详解
2020/09/09 Javascript
python入门之语句(if语句、while语句、for语句)
2015/01/19 Python
在Python下尝试多线程编程
2015/04/28 Python
python链接Oracle数据库的方法
2015/06/28 Python
关于python2 csv写入空白行的问题
2018/06/22 Python
python 将列表中的字符串连接成一个长路径的方法
2018/10/23 Python
Pytorch基本变量类型FloatTensor与Variable用法
2020/01/08 Python
详解pyinstaller生成exe的闪退问题解决方案
2020/06/19 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
2020/06/28 Python
基于注解实现 SpringBoot 接口防刷的方法
2021/03/02 Python
Mankind西班牙男士护肤品网站:购买皮肤护理、护发和剃须
2017/04/27 全球购物
日本乐天官方海外转运服务:Rakuten Global Express
2018/11/30 全球购物
2014年医学生毕业自我鉴定
2014/03/26 职场文书
Python基础之hashlib模块详解
2021/05/06 Python
Java中PriorityQueue实现最小堆和最大堆的用法
2021/06/27 Java/Android
在CSS中使用when/else的方法
2022/01/18 HTML / CSS
动视暴雪取消疫苗禁令 让所有员工返回线下工作
2022/04/03 其他游戏