前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Java数据结构】二叉树详解(三)

【Java数据结构】二叉树详解(三)

作者头像
E绵绵
发布于 2025-05-24 02:57:55
发布于 2025-05-24 02:57:55
7502
代码可运行
举报
文章被收录于专栏:编程学习之路编程学习之路
运行总次数:2
代码可运行

1.❤️❤️前言~🥳🎉🎉🎉

Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的内容感兴趣,记得关注我👀👀以便不错过每一篇精彩。 当然,如果在阅读中发现任何问题或疑问,我非常欢迎你在评论区留言指正🗨️🗨️。让我们共同努力,一起进步! 加油,一起CHIN UP!💪💪

上篇文章我们讲完二叉树的基本知识点后,这篇文章将会给大家讲解一些二叉树的习题。

2. 检查两颗树是否相同

📌题目描述

给你两棵二叉树的根节点 pq ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

📋题目思路

首先,判断 p 和 q 是否为 null,如果有且只有一个为 null,则说明两棵树不相同,直接返回 false。如果两个树都不为 null,再判断它们的节点值是否相等,如果不相等则返回 false。如果相等则之后递归比较两个树的左右子树是否相同,如果都相同则返回 true,但凡有不同则直接返回false。

⏳题目代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   //检查两颗二叉树是否相同。
    public boolean isSameTree(BTNode p, BTNode q) {
        if ((p != null && q == null) || (p == null && q != null))
            return false;
        if (p != null && q != null) {
            if (p.value != q.value)
                return false;
        }
        if (p == null && q == null)
            return true;

        return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
    }

该题链接:检查两棵树是否相同


3. 另一颗树的子树

📌题目描述

给你两棵二叉树 rootsubRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。 二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。

📋题目思路

实现一个函数为isSubtree,用于判断二叉树 root 是否包含和 subRoot 具有相同结构和节点值的子树。 具体来说,首先调用一个我们在第一题中已经实现的函数 isSameTree(已经实现过该函数了,在这就不说了),判断 root 和 subRoot 是否完全相同(即结构和节点值都相同)。若相同则返回 true,否则继续递归调用isSubtree函数去判断 root 的左右子树中是否包含和 subRoot 相同的子树。只要有一个子树满足条件即可返回 true。若遍历完整个树仍未找到相同的子树,则返回 false。

⏳题目代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//给你两棵二叉树 root 和 subRoot 。
//检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。
//如果存在,返回 true ;否则,返回 false 。

  public boolean isSubtree(BTNode root, BTNode subRoot) {
        if (isSameTree(root, subRoot))
            return true;
        if (root != null)
            return isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot);
        return false;
    }
 public boolean isSameTree(BTNode p, BTNode q) {
        if ((p != null && q == null) || (p == null && q != null))
            return false;
        if (p != null && q != null) {
            if (p.value != q.value)
                return false;
        }
        if (p == null && q == null)
            return true;

        return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
    }

该题链接:另一颗树的子树


4.翻转二叉树

📌题目描述

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。


📋题目思路

具体步骤为:

  1. 首先判断当前节点是否为空,如果为空则返回null。
  2. 判断当前节点的左右子树是否都为空,如果不都为空,则交换左右子树。
  3. 递归反转左子树。
  4. 递归反转右子树。
  5. 最后返回反转后的二叉树的根节点。

⏳题目代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。
public BTNode invertTree(BTNode root) {
if (root == null)
return null;
if (root.left != null || root.right != null) {
BTNode temp = root.right;
root.right = root.left;
root.left = temp;


    }
    if (root.left != null)
        invertTree(root.left);
    if (root.right != null)
        invertTree(root.right);
    return root;
}

该题链接:翻转二叉树


5.对称二叉树

📌题目描述

给你一个二叉树的根节点 root , 检查它是否轴对称。


📋题目思路

具体实现方法为: 首先判断二叉树的根节点是否为null,若为null则返回true,因为空树是对称的。 接着调用check函数,该函数的参数是二叉树的左右子树。 在check函数中,首先判断左右子树是否都为null,若是则返回true;若有一个为null而另一个不是,则返回false,因为左右子树不对称。 若左右子树都不为null,则判断它们的值是否相等,若不相等则返回false。 最后,递归调用check函数判断左子树的左子树和右子树的右子树是否对称,以及左子树的右子树和右子树的左子树是否对称,若都对称则返回true,否则返回false。

⏳题目代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 //给你一个二叉树的根节点 root,检查它是否轴对称。(用了两个方法)
    public boolean isSymmetric(BTNode root) {
        if (root == null)
            return true;
        return check(root.left, root.right);
    }

    public boolean check(BTNode rootLeft, BTNode rootRight) {
        if (rootLeft == null && rootRight == null)
            return true;
        if ((rootLeft == null && rootRight != null) || (rootLeft != null && rootRight == null))
            return false;
        return (rootLeft.value == rootRight.value)
                && check(rootLeft.left, rootRight.right)
                && check(rootLeft.right, rootRight.left);
    }

该题链接:对称二叉树


6.判断一颗二叉树是否是平衡二叉树

📌题目描述

给定一个二叉树,判断它是否是 平衡二叉树



6.1第一种思路


📋题目思路

实现一个判断二叉树是否为平衡二叉树的方法。该方法接收一个 BTNode 类型的参数 root,表示二叉树的根节点,返回一个 boolean 类型的值,表示该二叉树是否为平衡二叉树。 首先判断当前节点是否为 null,若为 null 则返回 true,因为空树也可以看作是平衡二叉树。接着分别计算当前节点左右子树的高度,通过递归调用 getHeight 方法实现。最后判断当前节点的左右子树的高度差是否小于等于 1,若是则继续递归判断其左右子树是否为平衡二叉树,若均为平衡二叉树,则返回 true;否则返回 false。 注意:该代码在递归过程中,每个节点会被遍历多次,所以会出现重复计算的情况。经过优化后可以通过,大大缩短运行时间,优化后的方法就是第二种思路方法

⏳题目代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 /*
    给定一个二叉树,判断它是否是平衡二叉树
    平衡二叉树 :是指该树所有节点的左右子树的深度相差不超过1。
    */
  public boolean isBalanced(BTNode root) {
            if(root==null)
                return true;
            int a=getHeight(root.left);
            int b=getHeight(root.right);
            return  Math.abs(a-b)<=1 && isBalanced(root.left)&&isBalanced(root.right);
        }
    int getHeight(BTNode root) {
        int height = 0;
        if (root == null)
            return 0;
        return Math.max(getHeight(root.left), getHeight(root.right)) + 1;
    }

6.2第二种思路

📋题目思路

具体实现过程如下 首先,判断二叉树是否为空。若为空,则认为其是平衡的,返回 true。否则,调用 getHeight() 函数计算二叉树的高度。 getHeight() 函数递归地计算二叉树的高度。若当前节点为空,则返回 0。否则,分别递归计算左右子树的高度,并判断其高度差是否小于等于 1。若满足条件,则返回左右子树中更高的高度加一。否则,返回 -1,表示当前子树不平衡。 如果返回出的二叉树高度大于0,则认为是平衡的;否则认为是不平衡的。 第二种思路相比第一种思路其运行时间大大缩短了,可以说比第一种思路更好,直接一次遍历就实现了效果

⏳题目代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  //给定一个二叉树,判断它是否是平衡二叉树.(进阶版,更加高效)
 public boolean isBalanced(BTNode root) {
               if(root==null)
                   return  true;
               if(getHeight(root)>0)
                   return  true;
               else
                   return  false;
    }

    public  int getHeight(BTNode root){
        if(root==null)
            return  0;
        int a=getHeight(root.left);
        if(a<0)
            return -1;
        int b=getHeight(root.right);
        if(b<0)
            return -1;
        if(Math.abs(a-b)<=1)
            return  Math.max(a,b)+1;
        else
            return  -1;
    }
}

该题链接:判断一颗二叉树是否是平衡二叉树

7.二叉树的构建及遍历

📌题目描述

编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储), 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。

📋题目思路

这题比较难,我们讲的细致些,并且对于该题没有帮我们自动实现内部类,我们需要自己去实现。以下是对这段代码的详细讲解:

类和成员变量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Main{
    public int i; // 用于追踪当前处理的字符位置
    static class BTNode{
        char value; // 节点的值
        BTNode left; // 左子节点
        BTNode right; // 右子节点

        public BTNode(char value) {
            this.value = value;
        }
    }
}
  • Main类包含一个成员变量i,用于记录当前处理的字符位置。
  • BTNode是一个静态内部类,表示二叉树的节点。每个节点包含一个字符值(value),一个指向左子节点的指针(left),和一个指向右子节点的指针(right)。

主函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void main(String[] args) {
    Scanner in = new Scanner(System.in);

    // 注意 hasNext 和 hasNextLine 的区别
    while (in.hasNextLine()) { // 注意 while 处理多个 case
        Main main = new Main(); // 为每行输入创建一个新的Main对象
        String b = in.nextLine(); // 读取一行输入
        BTNode root = main.creatBinaryTree(b); // 构建二叉树
        main.inOrder(root); // 对构建的二叉树进行中序遍历
        System.out.println(); // 输出完一行后换行
    }
}
  • 主函数使用Scanner对象从标准输入中读取用户输入的字符串。
  • while (in.hasNextLine())循环可以处理多行输入。
  • 对于每一行输入,创建一个新的Main对象并调用creatBinaryTree方法构建二叉树,然后调用inOrder方法进行中序遍历并输出结果。

构建二叉树

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public BTNode creatBinaryTree(String s){
    if (i >= s.length()) {
        return null;
    }
    if (s.charAt(i) == '#') {
        return null;
    }
    BTNode root = new BTNode(s.charAt(i)); // 创建根节点
    i++;
    root.left = creatBinaryTree(s); // 递归构建左子树
    i++;
    root.right = creatBinaryTree(s); // 递归构建右子树
    return root;
}
  • creatBinaryTree方法通过递归的方式根据前序遍历字符串构建二叉树。
  • 如果当前字符是#,表示当前节点为空,返回null
  • 否则,创建一个新节点,并递归构建左子树和右子树。
  • 需要注意的是,i在递归调用前后都会自增,以确保处理下一个字符。

中序遍历

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public void inOrder(BTNode root){
    if (root == null)
        return;
    inOrder(root.left); // 递归遍历左子树
    System.out.print(root.value + " "); // 打印当前节点的值
    inOrder(root.right); // 递归遍历右子树
}
  • inOrder方法通过递归的方式进行中序遍历。
  • 如果当前节点为空,直接返回。
  • 先递归遍历左子树,再打印当前节点的值,最后递归遍历右子树。

代码中的潜在问题

  1. i的初始值i应该在每次构建新树前初始化为0,以确保从字符串的开始位置处理。所以我们将i设置为实例成员变量,这样每次创建新树时i初始值都是0。.
  2. 字符串边界检查:在访问字符串字符前需要检查索引是否越界,一般我们输入的字符串都是合法的,不会发生越界情况。

⏳题目代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/*编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。
     例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。
     建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。*/
public class Main{
    public   int i;
    static class BTNode{
        char value;
        BTNode left;
        BTNode right;

        public BTNode(char value) {
            this.value = value;
        }
    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { // 注意 while 处理多个 case
             Main main=new Main();
            String b = in.nextLine();
         BTNode root =  main.creatBinaryTree(b);
            main.inOrder(root);
        }
    }
    public  BTNode creatBinaryTree(String s){
        if(s.charAt(i)=='#')
         return  null;
       BTNode root  =new BTNode(s.charAt(i));
               i++;
       root.left= creatBinaryTree(s);
              i++;
         root.right=creatBinaryTree(s);
         return root;
    }
    public void inOrder( BTNode root){
        if(root==null)
            return;
        inOrder(root.left);
        System.out.print(root.value+" ");
        inOrder(root.right);
    }


}

该题链接:二叉树的构建及遍历


8.总结

这篇文章讲了6个二叉树习题,下篇文章将会继续讲二叉树的相关习题。在此,我们诚挚地邀请各位大佬们为我们点赞、关注,并在评论区留下您宝贵的意见与建议。让我们共同学习,共同进步,为知识的海洋增添更多宝贵的财富!🎉🎉🎉❤️❤️💕💕🥳👏👏👏

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
CentOS 7.4搭建LNMP环境
目前LNMP环境的应用非常多。在静态页面的处理上,Nginx比Apache更强;但在动态页面的处理上,Nginx并不占优势。
子润先生
2021/06/29
8080
centos搭建lnmp
在centos上面搭建当今性能相对较好的一套服务器环境LNMP。即:Linux + Nginx + MySQL + Php 。由于 Nginx 比Apache更轻巧一些,而且在nginx的官方网站上面对于nginx处理的多并发量是100000。所以,在现在网站会面临这种大并发量的时候,使用Nginx 来作为服务器程序确实是一个不错的选择,不过如果使用LAMP环境的话,对于php的执行过程是使用mod-php这样的一个apache 模块,但使用LNMP的话,是使用一个叫做php-fpm 的一个单独的进程来完成处理,而且,Nginx 本身也是一个独立的进程,所以对资源占用就比LAMP环境下多了一个进程。 配置mysql mysql5.5解压出来你会发现找不到configure文件,我们只能用cmake,默认linux系统是没有cmake,所以会显示找不到cmake command,解决办法:yum install cmake 下载Mysql:wgethttp://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.14.tar.gz 增加用户组 :/usr/sbin/groupadd mysql /usr/sbin/useradd -g mysql mysql 基本操作:tar xvf mysql-5.5.14.tar.gz cd mysql-5.5.14/ 安装所需要系统库相关库文件:yum install -y gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel*(当然一些重复的会自动忽略) 执行命令:cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DMYSQL_USER=mysql 参数等说明: DCMAKE_INSTALL_PREFIX=/usr/local/mysql#mysql安装的主目录,默认为/usr/local/mysql DMYSQL_DATADIR=/usr/local/mysql/data#mysql数据库文件的存放目录,可以自定义 DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock#系统Socket文件(.sock)设置,基于该文件路径进行Socket链接,必须为绝对路径 DSYSCONFDIR=/etc #mysql配置文件 my.cnf的存放地址,默认为/etc下 DMYSQL_TCP_PORT=3306#数据库服务器监听端口,默认为3306 DENABLED_LOCAL_INFILE=1#允许从本地导入数据 DWITH_READLINE=1 #快捷键功能 DWITH_SSL=yes #支持 SSL DMYSQL_USER=mysql#默认为mysql //下面3个是数据库编码设置 DEXTRA_CHARSETS=all#安装所有扩展字符集,默认为all DDEFAULT_CHARSET=utf8#使用 utf8 字符 DDEFAULT_COLLATION=utf8_general_ci#校验字符 //下面5个是数据库存储引擎设在 DWITH_MYISAM_STORAGE_ENGINE=1#安装 myisam 存储引擎 DWITH_INNOBASE_STORAGE_ENGINE=1#安装 innodb 存储引擎 DWITH_ARCHIVE_STORAGE_ENGINE=1#安装 archive 存储引擎 DWITH_BLACKHOLE_STORAGE_ENGINE=1#安装 blackhole 存储引擎 DWITH_PARTITION_STORAGE_ENGINE=1#安装数据库分区 编译过程中如果会出现以下错误 mysqld.cc: In function ‘void handle_connections_s
黄啊码
2020/05/29
1.4K0
centos-6.5安装部署LNMP环境
安装依赖库:yum -y install zlib zlib-devel openssl openssl-devel pcre-devel
用户1679793
2019/02/15
7130
源码编译LNMP平台架构
众所周知,LAMP 平台是目前应用最为广泛的网站服务器架构,其中的“A”对应着Web服务软件Apache HTTP Server。随着Nginx在企业中的使用越来越多,LNMP(或LEMP)架构也受到越来越多Linux系统工程师的青睐,其中的“E”就来自于Nginx的发音[engine x]。就像构建LAMP平台一一样, 构建LNMP平台也需要Linux服务器、MySOL数据库和PHP解析环境,区别主要在Nginx与PHP的协作配置上。
星哥玩云
2022/07/24
7830
源码编译LNMP平台架构
手把手教你,嘴对嘴传达------源码编译LNMP部署及应用 , 手动搭建discuz论坛
LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python
不吃小白菜
2020/09/03
9380
手把手教你,嘴对嘴传达------源码编译LNMP部署及应用   , 手动搭建discuz论坛
企业网站架构之Nginx详解原理以及工作模块;源码Lnmp架构
Nginx详解及lnmp环境架构 一、Nginx详解以及优点 在当前互联网环境下,一般高端的服务前端都采用nginx作为web前端,而更多的都是采用lnmp架构,真正的后端服务器才会采用apache. 为什么这么做,要取决于nginx和apache两者之间的优缺性.: nginx与apache相比有以下优势:在性能上,nginx占用很少的系统资源,能支持更多的并发链接,达到更高的访问率;在功能上,Nginx是优秀的代理服务器和负载均衡器;在安装配置上,简单灵活。 nginx模块基本都是静态编译,同时对
BGBiao
2018/02/26
2K0
企业网站架构之Nginx详解原理以及工作模块;源码Lnmp架构
entOS 7.4基于LNMP环境安装Zabbix监控平台
https://mirrors.yangxingzhen.com/nginx/nginx-1.13.4.tar.gz
子润先生
2021/07/09
3210
centos6.8下安装部署LNMP-(nginx1.8.0+php5.6.10+mysql5.6.12)
在平时运维工作中,经常需要用到LNMP应用框架。 以下对LNMP环境部署记录下: 1)前期准备:为了安装顺利,建议先使用yum安装依赖库 [root@opd ~]#yum install -y make cmake gcc gcc-c++ autoconf automake libpng-devel libjpeg-devel zlib libxml2-devel ncurses-devel bison libtool-ltdl-devel libiconv libmcrypt mhash mcrypt l
洗尽了浮华
2018/01/22
7340
Docker分离环境搭建LNMP并部署Discuz
1、配置YUM源 vi /etc/yum.repos.d/CentOS-Base.repo 末行添加 [docker-repo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/7/ enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg 2、安装docker引擎
星哥玩云
2022/07/26
1.2K0
Docker分离环境搭建LNMP并部署Discuz
Linux 中 Discuz 部署
冷影玺
2023/10/11
5260
Linux 中 Discuz 部署
LNMP环境搭建Zabbix监控平台自动化安装脚本
此脚本是LNMP环境搭建Zabbix监控平台自动化安装脚本,有需要朋友可以参考,脚本内容如下:
子润先生
2021/07/06
3490
单机部署 LNMP
``关闭SELinux # 临时关闭selinux setenforce 0 # 永久关闭selinux sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config 关闭防火墙 # 临时关闭防火墙: systemctl stop firewalld # 永久关闭防火墙: systemctl disable firewalld 1. 源码部署nginx 1.1 下载源码 # -c 是断点续传 wget -c http://
萌海无涯
2021/03/16
9180
centos7.4安装LNMP
系统最小化安装,只安装了一些常用包(vim、lirzs、gcc*、wget、bash-completion)
萧晚歌
2020/08/19
9620
手把手教你搭建惊艳的博客
相信大多数人都有自己搭建博客网站的想法,本文就手把手一步一步的进行,最终结果类似如下样式:
FlyLolo
2022/09/09
6790
手把手教你搭建惊艳的博客
编译安装Nginx + PHP + MySQL
编译安装 Nginx # 创建用户和组 groupadd nginx useradd -s /sbin/nologin nginx # 编译安装 ./configure --prefix=/usr/local/nginx --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/ng
陳斯托洛夫斯記
2022/10/27
1.1K0
LNMP+FastCGI平台搭建脚本
cmake-2.8.10.2.tar.gz libevent-2.0.21-stable.tar.gz libmcrypt-2.5.8.tar.gz mhash-0.9.9.9.tar.gz nginx-1.2.0.tar.gz php-5.4.9.tar.gz libiconv-1.13.tar.gz MySQL-5.5.13.tar.gz
星哥玩云
2022/07/03
3130
如何搭建LNMP环境【编译版】
www 用户主要是用来赋予 Nginx 和 PHP 执行权限,mysql 主要是赋予给 MySQL 权限,禁止登录是为了防止用户有权限去操作 www 和 mysql,一切为了安全。
魔王卷子
2019/06/02
1.4K0
构建LAMP架构_lamp和lnmp区别
LAMP 架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态 Web 站点服务及其应用开发环境。LAMP 是一个缩写词,具体包括 Linux 操作系统、Apache 网站服务器、MySQL 数据库服务器、PHP(或 Perl、Python)网页编程语言。
全栈程序员站长
2022/11/07
8370
linux中lamp架构搭建_docker搭建redis集群
本次LAMP架构搭建实验所需安装包: 链接:https://pan.baidu.com/s/1SlveRWBTil1nM5jy2euJlQ 提取码:3mpt
全栈程序员站长
2022/11/03
1.7K0
linux中lamp架构搭建_docker搭建redis集群
CentOS 7.4基于LAMP环境安装WordPress博客
WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MYSQL数据库的服务器上架设属于自己的网站。也可以把WordPress当作一个内容管理系统(CMS)来使用。
子润先生
2021/06/29
5680
推荐阅读
相关推荐
CentOS 7.4搭建LNMP环境
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档