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的list()的一步操作给一组变量进行赋值的使用
May 18 PHP
PHP版网站缓存加快打开速度的方法分享
Jun 03 PHP
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
Jun 19 PHP
调试PHP程序的多种方法介绍
Nov 06 PHP
getimagesize获取图片尺寸实例
Nov 15 PHP
Zend Guard使用指南及问题处理
Jan 07 PHP
PHP中生成UUID自定义函数分享
Jun 10 PHP
PHP实现简单爬虫的方法
Jul 29 PHP
PHP防止刷新重复提交页面的示例代码
Nov 11 PHP
mac下多个php版本快速切换的方法
Oct 09 PHP
PHP实现上传多文件示例代码
Feb 20 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
Mar 10 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函数学习之PHP函数点评
2012/07/05 PHP
浅析memcache启动以及telnet命令详解
2013/06/28 PHP
PHP获取当前url的具体方法全面解析
2013/11/26 PHP
两千行代码的PHP学习笔记汇总
2014/10/05 PHP
PHP中的一些常用函数收集
2015/05/26 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
2019/03/28 PHP
Referer原理与图片防盗链实现方法详解
2019/07/03 PHP
php使用event扩展的io复用测试的示例
2020/10/20 PHP
认识延迟时间为0的setTimeout
2008/05/16 Javascript
利用jQuery的$.event.fix函数统一浏览器event事件处理
2009/12/21 Javascript
js限制textarea每行输入字符串长度的代码
2012/10/31 Javascript
JS弹出层的显示与隐藏示例代码
2013/12/27 Javascript
使用jQuery时Form表单元素ID和name命名大忌
2014/03/06 Javascript
让浏览器DOM元素最后加载的js方法
2014/07/29 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
js实现按钮控制图片360度翻转特效的方法
2015/02/17 Javascript
JavaScript变量的作用域全解析
2015/08/14 Javascript
基于JavaScript实现通用tab选项卡(通用性强)
2016/01/07 Javascript
原生js实现autocomplete插件
2016/04/14 Javascript
jQuery的文档处理程序详解
2016/05/10 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
详解Python中的变量及其命名和打印
2016/03/11 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
2017/06/27 Python
python 上下文管理器使用方法小结
2017/10/10 Python
pandas中read_csv的缺失值处理方式
2019/12/19 Python
详解Python IO编程
2020/07/24 Python
pycharm中使用request和Pytest进行接口测试的方法
2020/07/31 Python
无谷物狗粮:Pooch & Mutt
2018/05/23 全球购物
财务支持类个人的自我评价
2014/02/14 职场文书
2014年房产销售工作总结
2014/12/08 职场文书
2015年学生资助工作总结
2015/05/25 职场文书
天气温馨提示语
2015/07/14 职场文书
初三毕业感言
2015/07/31 职场文书
超级实用的公文标题大全!
2019/07/19 职场文书
Python打包为exe详细教程
2021/05/18 Python