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


    <?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());
  • 相关阅读:
    串字符串下沙的沙粒
    格式返回jquery js 获取获得时间差,时间格式为
    类型数组perl6学习
    安装文件win7,ubuntu双系统的安装——准备工作
    下标注意【算法】冒泡排序与选择排序的递归实现
    容器结构Thrift的数据类型系统
    linux初次入门学习小结
    sata拷贝文件时候framebuffer 闪烁问题
    switch_root 到nfs根文件
    Linux内核中64 bit division
  • 原文地址:https://www.cnblogs.com/deverz/p/9915986.html
Copyright © 2020-2023  润新知