• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

PHP二叉树的先序,中序,后续遍历实现方式

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
<?php
/********************************************************
 * 我写的PHP都是从C语言的数据结构中演化而来************************
 **************************************************************
 * /**
 *    ******二叉树图****
 *      A                    *
 *     * *                   *
 *    *   *                  *
 *   B     C                *
 *        *                   *
 *       *                    *
 *      D                    *
 *       *                    *
 *         *E                *
 ******************
 * PHP- 链式二叉树的遍历---先序遍历(根,左,右)-中序遍历(左,根,右)-后序遍历(左,右,根)
 * 先 A B C D E
 * 中 B A D E C
 * 后 B E D C A
 * @time
 * @Author
 ****/
Class  BTreeNode
{
    public $data; //数据域
    public $LeftHand = NULL; //左指针
    public $RightHand = NULL; //右指针

    public function __construct ($data)
    {
        if (!empty($data)) {
            $this->data = $data;
        }
    }

    //先序遍历(根,左,右)递归实现
    public function PreTraverseBTree ($BTree)
    {
        if (NULL !== $BTree) {
            var_dump($BTree->data);//
            if (NULL !== $BTree->LeftHand) {
                $this->PreTraverseBTree($BTree->LeftHand); //递归遍历左树
            }
            if (NULL !== $BTree->RightHand) {
                $this->PreTraverseBTree($BTree->RightHand); //递归遍历右树
            }
        }
    }

    //中序遍历(左,根,右)递归实现
    public function InTraverseBTree ($BTree)
    {
        if (NULL !== $BTree) {
            if (NULL !== $BTree->LeftHand) {
                $this->InTraverseBTree($BTree->LeftHand); //递归遍历左树
            }
            var_dump($BTree->data); //
            if (NULL !== $BTree->RightHand) {
                $this->InTraverseBTree($BTree->RightHand); //递归遍历右树
            }
        }
    }

    //后序遍历(左,右,根)递归实现
    public function FexTraverseBTree ($BTree)
    {
        if (NULL !== $BTree) {
            if (NULL !== $BTree->LeftHand) {
                $this->FexTraverseBTree($BTree->LeftHand); //递归遍历左树
            }
            if (NULL !== $BTree->RightHand) {
                $this->FexTraverseBTree($BTree->RightHand); //递归遍历右树
            }
            var_dump($BTree->data); //
        }
    }
}

header("Content-Type:text/html;charset=utf-8");
echo '先的内存为' . var_dump(memory_get_usage());
echo '<hr/>';
//创建五个节点
$A = new  BTreeNode('A');
$B = new  BTreeNode('B');
$C = new  BTreeNode('C');
$D = new  BTreeNode('D');
$E = new  BTreeNode('E');
//连接形成一个二叉树
$A->LeftHand = $B;
$A->RightHand = $C;
$C->LeftHand = $D;
$D->RightHand = $E;

//先序遍历
echo '先序遍历的结果' . '<br>';
$A->PreTraverseBTree($A);
echo '<br/>中序遍历的结果' . '<br>';
$A->InTraverseBTree($A);
echo '<br/>后序列遍历的结果' . '<br/>';
$A->FexTraverseBTree($A);
echo '<hr/>';
echo '后的内存为' . var_dump(memory_get_usage());

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
小白linux安装php 5.6+nginx配置(踩坑版)发布时间:2022-07-10
下一篇:
UCHome中数据库操作类(class_mysql.php)页面的代码分析发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap