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获得文件扩展名三法
Nov 25 PHP
PHP网站备份程序代码分享
Jun 10 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
Apr 02 PHP
解析PHP处理换行符的问题 \r\n
Jun 13 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
Jun 12 PHP
php数组合并array_merge()函数使用注意事项
Jun 19 PHP
PHP中foreach()用法汇总
Jul 02 PHP
php正则表达式获取内容所有链接
Jul 24 PHP
php实现图片按比例截取的方法
Feb 06 PHP
PHP中ajax无刷新上传图片与图片下载功能
Feb 21 PHP
PHP 断点续传实例详解
Nov 11 PHP
PHP输出Excel PHPExcel的方法
Jul 26 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分页函数
2006/10/09 PHP
php学习笔记之 函数声明
2011/06/09 PHP
php类中private属性继承问题分析
2012/11/01 PHP
PHP GD库生成图像的几个函数总结
2014/11/19 PHP
php面向对象程序设计入门教程
2019/06/22 PHP
基于jquery用于查询操作的实现代码
2010/05/10 Javascript
Javascript实现真实字符串剩余字数提示的实例代码
2013/10/22 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
2016/04/06 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
Vue应用部署到服务器的正确方式
2017/07/15 Javascript
Vue 2.0学习笔记之Vue中的computed属性
2017/10/16 Javascript
微信小程序支付之c#后台实现方法
2017/10/19 Javascript
浅析node.js的模块加载机制
2018/05/25 Javascript
原生JS检测CSS3动画是否结束的方法详解
2019/01/27 Javascript
详解Next.js页面渲染的优化方案
2019/01/27 Javascript
vue+elementUI实现表格关键字筛选高亮
2020/10/26 Javascript
Vue.js+cube-ui(Scroll组件)实现类似头条效果的横向滚动导航条
2019/06/24 Javascript
vue 项目打包时样式及背景图片路径找不到的解决方式
2019/11/12 Javascript
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
手把手带你搭建一个node cli的方法示例
2020/08/07 Javascript
python脚本实现查找webshell的方法
2014/07/31 Python
Python中逗号的三种作用实例分析
2015/06/08 Python
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
2018/02/23 Python
Python virtualenv虚拟环境实现过程解析
2020/04/18 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
Python JSON常用编解码方法代码实例
2020/09/05 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
2020/10/02 Python
GUESS Factory加拿大:牛仔裤、服装及配饰
2019/09/20 全球购物
迪士尼英国官方商店:shopDisney UK
2019/09/21 全球购物
3分钟演讲稿
2014/04/30 职场文书
大一新生期末自我评价
2014/09/12 职场文书
党旗在我心中演讲稿
2014/09/15 职场文书
财务统计员岗位职责
2015/04/14 职场文书
环保建议书作文300字
2015/09/14 职场文书
培训心得体会怎么写
2016/01/25 职场文书