java基础概念49-数据结构2

一、树

1-1、树的基本概念

1、树的节点

2、二叉树

3、树的高度

1-2、二叉查找树

普通二叉树 没有规律,不方便查找,没什么作用。

1、基本概念

2、添加节点

此时,该方式添加形成的二叉查找树,根节点就是第一个节点。

3、查找节点

4、二叉树的遍历

  • 前序遍历
  • 中序遍历
  • 后序遍历
  • 层序遍历
①前序遍历
②中序遍历(最常用)

获取到的数据是从小到大的!所以,这种遍历方式是最常见的!

③后序遍历
④层序遍历

5、二叉查找树的弊端

此时,查询效率太低了!

一棵树想要提高查询效率,要树的左、右高度差不多!------平衡二叉树。

1-3、平衡二叉树

1、平衡二叉树的旋转机制

目的:在构建二叉树的时候,保持平衡。

①、左旋

【示例1】:

左旋步骤1:(简单)

【示例2】:

左旋步骤2:(复杂)

②、右旋

【示例1】:

右旋步骤1:(简单)

【示例2】:

右旋步骤2:(复杂)

③、平衡二叉树需要旋转的四种情况
1、左左:一次右旋
2、左右:先局部左旋,再整体右旋

步骤一:局部左旋

步骤二:整体右旋

3、右右:一次左旋
4、右左:先局部右旋,再整体左旋

步骤一:局部右旋

步骤二:整体左旋

小结:

1-4、小结-树的演变

1-5、红黑树

1、红黑规则

2、构建红黑树

添加节点时,默认节点是红色的,因为效率高!(按照红黑规则调整的次数少!)

旋转的时候,先把叶子nil结点去掉,直接转,转完再把nil节点加上即可!

【示例】:

【步骤一】:添加第一个节点

【步骤二】:添加第二个节点

非根,父节点是黑色,不做调整。

【步骤三】:添加第三个节点

【步骤四】:添加第四个节点

非根,父红,叔叔红色:

【步骤五】:添加第五个节点

非根,父节点是黑色,不做调整。

【步骤六】:添加第六个节点

3、红黑树的性能

红黑树的增、删、改、查,性能都比较好!

在构建红黑树的过程中,调整次数多的是改变颜色(只是改变节点里面存储颜色的变量的值),旋转的操作(旋转操作比较耗时!),对比平衡二叉树,少太多了!

相关推荐
多多*1 小时前
分布式系统中的CAP理论和BASE理论
java·数据结构·算法·log4j·maven
sg_knight1 小时前
Docker 实战:如何限制容器的内存使用大小
java·spring boot·spring·spring cloud·docker·容器·eureka
合作小小程序员小小店1 小时前
web网页开发,在线考勤管理系统,基于Idea,html,css,vue,java,springboot,mysql
java·前端·vue.js·后端·intellij-idea·springboot
小白程序员成长日记1 小时前
2025.11.10 力扣每日一题
数据结构·算法·leetcode
随便叫个啥呢3 小时前
java使用poi-tl模版+vform自定义表单生成word,使用LibreOffice导出为pdf
java·pdf·word
dragoooon343 小时前
[优选算法专题六.模拟 ——NO.40~41 外观数列、数青蛙]
数据结构·算法·leetcode
面向星辰4 小时前
扣子开始节点和结束节点
java·服务器·前端
.小小陈.4 小时前
数据结构5:二叉树
数据结构
Laity______4 小时前
指针(2)
c语言·开发语言·数据结构·算法
是苏浙4 小时前
零基础入门C语言之C语言实现数据结构之顺序表经典算法
c语言·开发语言·数据结构·算法