zoukankan      html  css  js  c++  java
  • PHP递归方法实现前序、中序、后序遍历二叉树

    二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。

    <?php
    
    namespace appdata_structure	ree;
    
    /**
     * php递归方法方法实现前序、中序、后序遍历二叉树
     * 二叉树是每个节点最多有两个子树的树结构。通常子树被称作"左子树"(left subtree)和"右子树"(right subtree)
     * https://www.cnblogs.com/rxbook/p/10441931.html
     */
    class BinaryTree1
    {
        public $value;
        public $left;
        public $right;
    }
    
    /**
     * 前序遍历
     * 根节点 ---> 左子树 ---> 右子树
     */
    function preorder($root)
    {
        if (empty($root)) {
            return;
        }
    
        echo $root->value . ' ';//输出根节点
        preOrder($root->left);
        preOrder($root->right);
    }
    
    /**
     * 中序遍历
     * 左子树---> 根节点 ---> 右子树
     */
    function inorder($root)
    {
        if (empty($root)) {
            return;
        }
    
        inorder($root->left);
        echo $root->value . ' ';//输出根节点
        inorder($root->right);
    }
    
    /**
     * 后序遍历
     * 左子树 ---> 右子树 ---> 根节点
     */
    function tailorder($root)
    {
        if (empty($root)) {
            return;
        }
    
        tailorder($root->left);
        tailorder($root->right);
        echo $root->value . ' ';//输出根节点
    }
    
    //测试
    $a = new BinaryTree1();
    $b = new BinaryTree1();
    $c = new BinaryTree1();
    $d = new BinaryTree1();
    $e = new BinaryTree1();
    $f = new BinaryTree1();
    
    $a->value = 'A';
    $b->value = 'B';
    $c->value = 'C';
    $d->value = 'D';
    $e->value = 'E';
    $f->value = 'F';
    
    $a->left = $b;
    $a->right = $c;
    $b->left = $d;
    $c->left = $e;
    $c->right = $f;
    
    echo "php递归方法实现前序、中序、后序遍历二叉树: 
    ";
    echo "前序遍历:";
    preorder($a); //A B D C E F
    echo "
    ";
    
    echo "中序遍历:";
    inorder($a);//D B A E C F
    echo "
    ";
    
    echo "后序遍历:";
    tailorder($a);//D B E F C A
    echo "
    ";

    结果:

  • 相关阅读:
    3.2 直线与方程
    3.1.2 两条直线平等与垂直的判定
    GNU Make
    linux 启动后台进程
    go 占位符
    raft 协议
    restTemplate 接收list数据
    JAVA通过实体类生成数据库查询语句(驼峰命名规则)
    flink使用命令开始、停止任务
    SPringBoot 配置类继承WebMvcConfigurationSupport和实现WebMvcConfigurer的使用
  • 原文地址:https://www.cnblogs.com/rxbook/p/10441931.html
Copyright © 2011-2022 走看看