爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      二叉搜索树(Java语言实现)

      首页 知识中心 软件开发 文章详情页

      二叉搜索树(Java语言实现)

      2024-12-27 07:59:04 阅读次数:17

      cur,二叉,删除,右边,搜索,查找,节点

      前言

      每个人都有自己的追求和梦想,想要成为更好的自己。而在软件开发领域,掌握数据结构是成为优秀程序员的必备技能之一。二叉搜索树是其中重要的一种,它的优缺点和实现原理不仅是程序员必须了解的内容,同时也是程序员个人成长的一部分。在Java语言中实现一个二叉搜索树需要的不仅仅是技术上的熟练掌握,更需要的是内心的坚定和自我超越的精神。掌握数据结构,科学编程,这是我们一路走来的坚定信念,也是我们通向成功的必经之路。


      正文

      一、概念

      二叉搜索树(Binary Search Tree,BST)是一种基于二叉树而产生的一种数据结构。在二叉搜索树中,每个节点的值只能比它的左子节点大或者比它的右子节点小,这一特性使得数据的查找、插入和删除等操作变得高效而容易。今天我们将学习如何使用Java语言实现二叉搜索树,以及该数据结构的一些重要概念和操作。

      二、相关操作的代码实现

      二叉搜索树主要要实现的代码就是构建、查找、删除,当然,构建是第一位,下面将介绍二叉搜索树是如何构建出来的。

      2.1、构建

      构建二叉搜索树首先要搞清楚他有几个属性。首先,左右孩子节点肯定要有吧?然后就是要有个数字的属性吧?还要有个头,也就是根节点,有了这三个属性,再写个构造方法,我们就可以先写一部分了,代码实现如下:

      public class BinarySearchTree {
          static class TreeNode {
              private int val;
              private TreeNode left;
              private TreeNode right;
              public TreeNode( int val) {
                  this.val = val;
              }
          }
      }

      然后就是构造二叉搜索树的正式代码了,在写这个之前,我们要搞清楚二叉搜索树到底是怎么构建的。首先来看一个构建好的二叉搜索树,如下图就是一课标准的二叉搜索树:

      二叉搜索树(Java语言实现)

      如上图,大家先找找这颗树的特点,和普通的二叉树有什么不同呢?是不是这棵树所有的左右子树都满足左边子树的数据全部比根节点小,右边的子树所有的数据全都比根节点大呢?是这样的没错,所以我们思路可以这样:

      首先,如果root == null,那么一定是第一次插入,我们直接让头等于这个值就行了。如果是后面的插入,我们定义需要插入的数据为val,然后我们要在这棵树里面找到val合适的位置,此时我们可以定义一个代走的指针为cur,如下图:

      二叉搜索树(Java语言实现)

      就比如我要插入的数据是 4 ,那cur该怎么走呢?首先是不是得和根节点 8 进行比较呢?比较的比 8 小,就走左边,再跟 5 比较,还是比 5 小,继续走左边,再跟 3 比较,这回比较大了,就走右边,但是一走右边就为null了呀,那还怎么插?所以,光有一个变量cur是肯定不够的,还要定义一个在cur之上的,也就是cur的父亲,当cur == null了,直接跳出去,跳出去之后,直接和这个cur的父亲节点比较,如果大就放右边,如果小就左边,插入成功返回true,否则返回false,思路理顺,代码实现如下:

      public boolean insert(int key) {
          TreeNode node = new TreeNode(key);
          if (root == null) {
              root = node;
              return true;
          }
          TreeNode cur = root;
          TreeNode curParent = null;
          while (cur != null) {
              // 如果比它小就往左边走
              if (key < cur.val) {
                  curParent = cur;
                  cur = cur.left;
              }
              // 如果比它大就往右边走
              else if (key > cur.val) {
                  curParent = cur;
                  cur = cur.right;
              }
              // 如果相等就提醒用户已存在,然后返回 false
              else {
                  System.out.println("该值得节点已存在!!!");
                  return false;
              }
          }
          // 出来判断到底是大还是小
          if (key < curParent.val) {
              curParent.left = node;
          }
          else {
              curParent.right = node;
          }
          return true;
      }

      如上,构造二叉搜索树的代码就实现了,可以先试着插入几个数据试试,运行结果如下:

      二叉搜索树(Java语言实现)

      这是我随便写的数据,按照这个数据,画出的图如下:

      二叉搜索树(Java语言实现)

      2.2、查找

      构造完成之后,我们还要学习关于二叉搜索树的查找方法,只要建好了一颗二叉搜索树,查找起来那速度真的是没得说,一颗普通的二叉树查找效率的时间复杂度是 O(N*long2n) ,搜索二叉树查找起来的效率那就直接减少了N倍,时间复杂度直接变成了 O(long2n) 。

      那这个查找方法到底该怎么写呢?首先我们可以定义一个代走的指针->Phead, 让这个指针走,小走左,大往右,找到返回节点,找不到返回空,思路理顺,代码实现如下:

      public TreeNode search(int val) {
          TreeNode phead = root;
          while (phead != null) {
              if (val < phead.val) {
                  phead = phead.left;
              }
              else if (val > phead.val) {
                  phead = phead.right;
              }
              else {
                  break;
              }
          }
          return phead;
      }

      这样子二叉搜索树查找的代码就写好了。因为如果打印返回值的话,打印的是一个地址,所以大家可以重写toString方法或者在break前面也写个打印,主要是打印找到该节点的地址,然后两个节点的地址相比较,如下:

      二叉搜索树(Java语言实现)

      2.3、删除

      然后就是二叉搜索树比较绕的删除部分了,首先看图:

      二叉搜索树(Java语言实现)

      删除一般是分三种情况,一种是删除的该节点左边是空,一种是删除的该节点右边是空,一种是两边都不是空,每种又分三种情况,所以说比较绕,但是你先别急,我带你慢慢来,先来看删除节点左边是空的情况:

      先假设,假设我要删除的节点左边是空,然后分三种:

      • 如果要删除的节点是头。
      • 如果不是头,但是是在父亲节点的左边。
      • 如果不是头,但是是在父亲节点的右边。

      主要就是这些情况,我们先写找节点的代码,如下:

      public void removeNode(int key) {
          // 先找到节点
          TreeNode cur = root;
          TreeNode parent = null;
          while (cur != null) {
              if (key < cur.val) {
                  parent = cur;
                  cur = cur.left;
              }
              else if (key > cur.val) {
                  parent = cur;
                  cur = cur.right;
              }
              else {
                  remove(cur, parent);
                  break;
              }
          }
          System.out.println("未找到该节点!!!");
      }

      上面三种情况,我们一个一个慢慢分析,先假设是头,那我们直接让头等于头的右边不就行了吗?那如果不是头呢?比如这样的:

      二叉搜索树(Java语言实现)

      假如我要删除的节点是 3 ,那该怎么办?哎,我们不是都找到了cur的父亲节点吗?直接让父亲节点指向cur.right不就好了?这个也分析完毕,我们再来看第三种情况:如果不是头,但是在父亲节点的右边,比如我要删除的是 6 ,如下:

      二叉搜索树(Java语言实现)

      还是老样子,看图说话,我们直接让parent.right = cur.right不就好了?所以第一种大情况的代码如下:

      private void remove(TreeNode cur, TreeNode parent) {
          // 左边是空
          if (cur.left == null) {
              // 判断是不是头
              if (cur == root) {
                  root = root.right;
              }
              // 如果不是头
              else {
                  // 判断是左还是右
                  if (cur == parent.left) {
                      parent.left = cur.right;
                  }
                  else {
                      parent.right = cur.right;
                  }
              }
          }
          // 右边是空
          else if (cur.right == null) {
      
          }
          // 左右都不是空
          else {
      
          }
      }

      紧接着我们来分析待删除的节点如果右边是空的情况,老样子,又分为三种情况:

      • 如果要删除的节点是头。
      • 如果不是头,但是是在父亲节点的左边。
      • 如果不是头,但是是在父亲节点的右边。

      这三种和上面大差不差,先来看第一种:待删除的节点是头节点,如下:

      二叉搜索树(Java语言实现)

      就比如说我要删除 8 ,那我们直接让root = root.left不就好了?

      再来分析第二种情况:不是头,但是待删除节点在父亲节点的左边,比如像删除 3 这种情况,我们直接让 5 这个节点指向 3 的左就行了,然后分析第三种情况,要一个新的图,如下:

      二叉搜索树(Java语言实现)

      第三种情况的条件是:待删除的节点右边是空,但是这个节点在父亲节点的右边,比如说 20 这个节点就很是满足这种情况,还是看图说话,我们直接让 8 这个父亲节点跳过 20 ,指向 15 就行了,所以当待删除节点右边为空的情况代码实现如下:

      else if (cur.right == null) {
          // 判断是不是头
          if (cur == root) {
              root = root.left;
          }
          // 如果不是头
          else {
              // 判断是左还是右
              if (cur == parent.left) {
                  parent.left = cur.left;
              }
              else {
                  parent.right = cur.left;
              }
          }
      }

      最后接着看我们最麻烦的一个:待删除节点左右都不是空的情况:

      二叉搜索树(Java语言实现)

      比如说我要删除 5 这个节点,我们用的是替罪羊的方法来实现这个要求的,可以找待删除节点左树的最大值,也可以找待删除节点右树的最小值,我们就拿找右树最小值举例,是不是可以定义一个代cur走的节点pcur呀,然后我们让pcur走,一直走到pcur.left是空,然后这个节点和cur交换,完成之后删掉pcur这个节点,但是因为pcur的左边是空的,不就又变成我们第一种大情况(当待删除节点左树为空时)的情况了吗?这个思想使用的是数学里面的归元的思想。思路理顺之后,代码实现如下:

      // 左右树都不是空
      else {
          // 先找到右边的最小值
          TreeNode pcur = cur.right;
          TreeNode pparent = cur;
          while (pcur.left != null) {
              pparent = pcur;
              pcur = pcur.left;
          }
          cur.val = pcur.val;
          // 然后删除这个替罪的节点
          // 又到了待删除的节点左边是空的情况了
          if (pcur == pparent.left) {
              pparent.left = pcur.right;
          }
          else {
              pparent.right = pcur.right;
          }
      }

      然后所有关于删除的代码整合一下,就是这样的:

      public void removeNode(int key) {
          // 先找到节点
          TreeNode cur = root;
          TreeNode parent = null;
          while (cur != null) {
              if (key < cur.val) {
                  parent = cur;
                  cur = cur.left;
              }
              else if (key > cur.val) {
                  parent = cur;
                  cur = cur.right;
              }
              else {
                  remove(cur, parent);
                  break;
              }
          }
          System.out.println("未找到该节点!!!");
      }
      
      private void remove(TreeNode cur, TreeNode parent) {
          // 左边是空
          if (cur.left == null) {
              // 判断是不是头
              if (cur == root) {
                  root = root.right;
              }
              // 如果不是头
              else {
                  // 判断是左还是右
                  if (cur == parent.left) {
                      parent.left = cur.right;
                  }
                  else {
                      parent.right = cur.right;
                  }
              }
          }
          // 右边是空
          else if (cur.right == null) {
              // 判断是不是头
              if (cur == root) {
                  root = root.left;
              }
              // 如果不是头
              else {
                  // 判断是左还是右
                  if (cur == parent.left) {
                      parent.left = cur.left;
                  }
                  else {
                      parent.right = cur.left;
                  }
              }
          }
          // 左右都不是空
          else {
              // 先找到右边的最小值
              TreeNode pcur = cur.right;
              TreeNode pparent = cur;
              while (pcur.left != null) {
                  pparent = pcur;
                  pcur = pcur.left;
              }
              cur.val = pcur.val;
              // 然后删除这个替罪的节点
              // 又到了待删除的节点左边是空的情况了
              if (pcur == pparent.left) {
                  pparent.left = pcur.right;
              }
              else {
                  pparent.right = pcur.right;
              }
          }
      }

      这样一个普通二叉搜索树就建成了,大家可以试着插入、删除、查找数据了。


      总结

      在本文中,我们学习了二叉搜索树的基本概念、特征和操作,以及如何在Java语言中实现它。通过学习二叉搜索树,我们可以更加深刻地理解数据结构和算法,并且了解如何使用二叉搜索树处理各种问题。

      与其他数据结构相比,二叉搜索树具有许多优点,例如进行插入、查找、删除等基本操作时速度非常快,而且它的内存使用效率也相对较高。因此,理解和掌握二叉搜索树是非常有必要的。

      当然,二叉搜索树也存在缺陷,例如不同的插入和删除顺序会影响树的平衡,使得二叉搜索树的性能降低等。为了解决这些问题,我们需要使用更高级的数据结构,例如红黑树和AVL树等。

      在学习过程中,我们需要时刻注意代码实现的复杂度和鲁棒性,尤其是处理边缘情况的能力。当然,能够熟练掌握二叉搜索树的基本操作远远不够,在实际应用中,我们还需要结合具体问题,在实际情况中加以运用。

      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.51cto.com/bitzmbdp/6458374,作者:稚名不带撇,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:Java接口详解

      下一篇:Java多态基础

      相关文章

      2025-05-19 09:04:44

      顺序查找法

      顺序查找法

      2025-05-19 09:04:44
      冒泡排序 , 最小值 , 查找 , 顺序
      2025-05-19 09:04:44

      spark控制台没显示其他机器

      spark控制台没显示其他机器

      2025-05-19 09:04:44
      Spark , 节点 , 集群
      2025-05-19 09:04:38

      js本地上传图片后实现预览与删除功能

      js本地上传图片后实现预览与删除功能

      2025-05-19 09:04:38
      js , 上传 , 删除 , 文件
      2025-05-19 09:04:14

      二叉树经典OJ练习

      二叉树经典OJ练习

      2025-05-19 09:04:14
      root , 二叉树 , 子树 , 节点 , 遍历
      2025-05-14 10:03:13

      【MySQL】-数据库优化(索引)

      索引(index)是帮助数据库高效获取数据的数据结构

      2025-05-14 10:03:13
      index , Tree , 二叉 , 搜索 , 数据 , 索引 , 节点
      2025-05-14 10:02:48

      MongoDB常用管理命令(1)

      MongoDB常用管理命令(1)

      2025-05-14 10:02:48
      会话 , 命令 , 操作 , 节点
      2025-05-14 10:02:48

      SQL Server 执行计划1--数据查询

      SQL语言(在SQL Server也叫做T-SQL)是一个解释性的语言(declarative language), 主要是描述的是人想要从数据库里获取数据的逻辑。但数据库接收到SQL语句后,会根据相关的统计信息制定自己的取数策略(执行计划)。

      2025-05-14 10:02:48
      Index , 查找 , 索引
      2025-05-14 09:51:15

      java实现管线拓扑关系连通性分析

      管线拓扑关系的连通性分析通常涉及图论(Graph Theory)中的概念,特别是无向图(Undirected Graph)的遍历算法,如深度优先搜索(DFS, Depth-First Search)或广度优先搜索(BFS, Breadth-First Search)。

      2025-05-14 09:51:15
      BFS , DFS , 复杂度 , 搜索 , 节点 , 访问 , 遍历
      2025-05-13 09:51:17

      rac dg节点2在修改完alert_oracle_sid.log文件名,主库切换日志后备库节点2不产生新的日志文件

      rac dg节点2在修改完alert_oracle_sid.log文件名,主库切换日志后备库节点2不产生新的日志文件

      2025-05-13 09:51:17
      dg , rac , 日志 , 节点
      2025-05-13 09:51:17

      rac环境节点1修改参数后,节点2启动出现ORA-01105、ORA-01677告警

      rac环境节点1修改参数后,节点2启动出现ORA-01105、ORA-01677告警

      2025-05-13 09:51:17
      ORA , rac , 节点
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5240401

      查看更多

      最新文章

      二叉搜索树中第K小的元素

      2025-05-13 09:50:17

      用go语言,现有一棵无向、无根的树,树中有 n 个节点,按从 0 到 n - 1 编号 给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges

      2025-05-13 09:49:12

      代码 测试用例 测试结果 测试结果 两两交换链表中的节点

      2025-05-09 09:30:19

      DS进阶:并查集

      2025-05-09 08:50:35

      基于springboot图书借阅管理系统【源码+数据库】

      2025-05-08 09:03:21

      数据结构知识点

      2025-05-08 09:03:07

      查看更多

      热门文章

      游戏编程之十 图像引擎DirectXDraw

      2022-11-14 02:56:39

      Python自动化:模拟人类在百度搜索页输入关键词进行搜索并打开搜索结果

      2023-04-17 09:39:34

      jquery-节点操作

      2023-06-13 08:29:18

      【C++】RBTree——红黑树

      2023-07-26 08:09:37

      Stream流式编程详解

      2023-07-17 08:10:17

      C语言找画笔(全网最详)

      2023-05-06 08:59:36

      查看更多

      热门标签

      java Java python 编程开发 代码 开发语言 算法 线程 Python html 数组 C++ 元素 javascript c++
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      算法题 59. 螺旋矩阵 II,60. 排列序列,61. 旋转链表

      Java数据结构与算法:AVL树

      Python自动化:模拟人类在百度搜索页输入关键词进行搜索并打开搜索结果

      基于C++学院教学信息管理系统编程设计

      性能篇:深入源码解析和性能测试arraylist和LinkedList差异!

      算法题:剑指 Offer 24. 反转链表(题目+思路+代码+注释)时空 O(N) O(1) 0ms击败100%、80%用户

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号