PHP高级程序员一定要会的知识点,赶紧收藏了! - 常见问题 - 大聪IT培训--广西专业的IT培训机构,专注PHP培训、web前端培训、Java培训、PHP开发、Web前端开发 - 钱柜娱乐777|钱柜777娱乐手机官网【唯一】
  • 全国统一热线
  • 联系电话400-800-6499
  • 推荐课程
  • PHP开发
  • PHP开发4394

    主讲老师:何文、谭龙涛

  • UI设计
  • UI设计6219

    主讲老师:陈秋婷、钟柳婷

  • 公司新闻  company news
  • 您当前的位置:首页 > 新闻资讯 > 常见问题 > PHP高级程序员一定要会的知识点,赶紧收藏了!

    PHP高级程序员一定要会的知识点,赶紧收藏了!

  • 作者:管理员发布时间:2018-01-09点击数:321
  • 在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆(引自百度百科)。

    作为高级程序员,遍历二叉树即是最基本的技能,那么,用PHP如何遍历二叉树呢?

    二叉树遍历,是值从根节点出发,按照某种次序依次访问二叉树中的所有节点,使得每个节点被访问一次且仅被访问依次。

    PHP高级程序员一定要会的知识点,赶紧收藏了!

    来源:百度图片

    前序遍历二叉树:如果二叉树为空则返回,若二叉树非空,则先遍历左树,再遍历右树,遍历顺序为ABCDEGF。

    中序遍历二叉树:如果二叉树为空则返回,若二叉树非空,则从根节点开始,中序遍历根节点的左子树,然后是访问根节点,最后中序遍历右子树,遍历顺序为CBEGDFA。

    后序遍历二叉树:如果二叉树为空则返回,若二叉树非空,则从左到右先叶子后节点的访问遍历访问左右子树,最后是访问根节点。访问顺序为CGEFDBA。

    层序遍历二叉树:如果二叉树为空则返回,若二叉树非空,则从树的第一层,也就是根节点开始访问,从上而下逐层遍历,在同一层中,按照从左到右的顺序对节点逐个访问。访问顺序为ABCDEFG。

    现在,我们用PHP代码,来遍历二叉树结构。二叉树是放一个大数组,每一个节点都有三个字段,data表示这个节点的值,lChild表示这个节点的左边子节点,rChild表示这个节点的右边子节点。二叉树的结构我们用上面那张图。

    二叉树结构代码如下:

    <?php

    //二叉树

    $arr = array(

    'data' => 'A',

    'lChild' => array(

    'data' => 'B',

    'lChild' => array(

    'data' => 'C',

    'lChild' => array(),

    'rChild' => array(),

    ),

    'rChild' => array(

    'data' => 'D',

    'lChild' => array(

    'data' => 'E',

    'lChild' => array(),

    'rChild' => array(

    'data' => 'G',

    'lChild' => array(),

    'rChild' => array(),

    ),

    ),

    'rChild' => array(

    'data' => 'F',

    'lChild' => array(),

    'rChild' => array(),

    ),

    ),

    ),

    'rChild' => array(),

    );

    遍历算法一:前序遍历二叉树

    <?php

    //前序遍历二叉树算法

    echo '前序遍历二叉树算法:';

    PreOrderTraverse($arr);

    echo '<Br>';

    function PreOrderTraverse($node){

    if(empty($node)){

    return;

    }

    //输出值

    print_r($node['data']);

    //左节点

    PreOrderTraverse($node['lChild']);

    //右节点

    PreOrderTraverse($node['rChild']);

    }

    遍历算法二:中序遍历二叉树

    <?php

    //中序遍历二叉树算法

    echo '中序遍历二叉树算法:';

    inOrderTraverse($arr);

    echo '<Br>';

    function inOrderTraverse($node){

    if(empty($node)){

    return;

    }

    //左节点

    inOrderTraverse($node['lChild']);

    //输出值

    print_r($node['data']);

    //右节点

    inOrderTraverse($node['rChild']);

    }

    遍历算法三:后序遍历二叉树

    <?php

    //后序遍历二叉树算法

    echo '后序遍历二叉树算法:';

    postOrderTraverse($arr);

    echo '<Br>';

    function postOrderTraverse($node){

    if(empty($node)){

    return;

    }

    //左节点

    postOrderTraverse($node['lChild']);

    //右节点

    postOrderTraverse($node['rChild']);

    //输出值

    print_r($node['data']);

    }


  • 上一篇:广西桂林PHP培训--php程序员面试必备
  • 下一篇:广西桂林IT培训--学习PHP后好就业吗?

  • 联系方式
  • 0773-5863218(周一至周五:8:00-20:00)

    手机号码:18177335633

    qq:526398449 QQ交谈

    地址:桂林市七星区信息产业园创新大厦B401

  • 公司二维码
  • 扫一扫,更精彩!

Copyright © 2016 大聪网络钱柜777娱乐手机官网科技 版权所有

桂ICP备12003741号-11