• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
    POST TIME:2021-10-18 05:18

    本文实例讲述了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程序设计算法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》及《PHP数学运算技巧总结》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • php遍历树的常用方法汇总
    • PHP实现二叉树的深度优先与广度优先遍历方法
    • php通过前序遍历树实现无需递归的无限极分类
    • php FLEA中二叉树数组的遍历输出
    • PHP实现的线索二叉树及二叉树遍历方法详解
    • php实现的二叉树遍历算法示例
    • PHP ClassObject -- PHP 自排序二叉树的深入解析
    • PHP构造二叉树算法示例
    • PHP完全二叉树定义与实现方法示例
    上一篇:PHP简单实现循环链表功能示例
    下一篇:PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信