Java学习笔记==》17.数据结构-树

本文介绍了数据结构中的树概念,包括节点、度、树高和根节点等基本术语,并详细讲解了二叉树的种类,如普通二叉树和二叉查找树的特性、插入规则及遍历方式。进一步探讨了平衡二叉树的旋转机制以及红黑树的红黑规则,强调了它们在保持查找效率方面的优势。
摘要由CSDN通过智能技术生成

数据结构-树 以及Set集合

一、数据结构(树)

1.专业名词及介绍

在这里插入图片描述

(1)节点(以节点16为例)

父节点:此节点上方的节点(18)
左子节点:此节点左下方的节点 (15)
右子节点:此节点右下方的节点(17)

在这里插入图片描述

(2)度:每一个节点的子节点数量

(3)二叉树:任意节点的度(子节点的数量)<=2

(4)树的高度(树高):树的总层数

(5)根节点:最顶层的节点

(6)

在这里插入图片描述

根节点的左子树:蓝色虚线里面的 根节点的右子树:绿色虚线里面的

2.二叉树

(1)、普通二叉树:树的结构毫无规律(如下图)

在这里插入图片描述

3.二叉查找树

​ ★二叉查找树,又称二叉排序树或者二叉搜索树

在这里插入图片描述

(1)特点:

​ ★每一个节点最多有两个子节点

​ ★任意节点左子树上的值都小于当前节点

​ ★任意节点右子树上的值 都大于当前节点

(2)添加节点:

​ ★规则:大的存右边,小的存左边,一样的不存

(3)查找数据:

​ ★规则:拿着值与根节点比较,小于根节点往左边找,大于根节点往右边找,以此类推,直至数据被找到或者数据不存在

(4)二叉树遍历方式:

在这里插入图片描述

①前序遍历

​ 从根节点开始,然后按照 当前节点==》左子节点==》右子节点 的顺序遍历

​ 则上图遍历完得到的数据顺序 20-18-16-19-23-22-24

②中序遍历

​ 从当前节点开始,然后按照 左子节点==》当前节点==》右子节点 的顺序遍历

​ 则上图遍历完得到的数据顺序 16-18-19-20-22-23-24

③后序遍历

​ 从当前节点开始,然后按照 左子节点==》右子节点 ==》当前节点 的顺序遍历

​ 则上图遍历完得到的数据顺序 16-19-18-22-24-23-20

④层序遍历

​ 从根节点开始,一层一层(每一层从左至右)的遍历

​ 则上图遍历完得到的数据顺序 20-18-23-16-19-22-24

4.平衡二叉树

(1)规则:任意节点左右子树高度差不超过1

(2)旋转机制:

①确定支点:从添加的节点开始,不断地往父节点找不平衡的点
②触发时机:当前加一个节点之后,该树不再是一颗平衡二叉树

(3)旋转分类

①左旋:

​ 🔺以不平衡的点为支点

​ 🔺把支点左旋降级,变成左子节点

​ 🔺晋升原来的右子节点

②右旋:

​ 🔺以不平衡的点为支点

​ 🔺把支点右旋降级,变成右子节点

​ 🔺晋升原来的左子节点

(4)平衡二叉树需要旋转的四种情况:

①左左:

​ 当根节点的左子树的左子树有节点插入,导致二叉树不平衡(也就是在根节点的左子树的左子树上添加节点,导致二叉树不平衡,只需要一次右旋,就可以使二叉树平衡)

②右右:

​ 当根节点的右子树的右子树有节点插入,导致二叉树不平衡(也就是在根节点的右子树的右子树上添加节点,导致二叉树不平衡,只需要一次左旋,就可以使二叉树平衡)

③左右:

​ 当根节点的左子树的右子树有节点插入,导致二叉树不平衡(也就是在根节点的左子树的右子树上添加节点,导致二叉树不平衡,要先进行一次局部左旋变成 左左,再进行一次整体右旋,就可以使得二叉树平衡)

④右左:

​ 当根节点的右子树的右子树有节点插入,导致二叉树不平衡(也就是在根节点的右子树的左子树上添加节点,导致二叉树不平衡,要先进行一次局部右旋变成 右右,再进行一次整体左旋,就可以使得二叉树平衡)

5.红黑树

★红黑树是一种自平衡的二叉查找树,是计算机科学中用到的一种数据结构

★1972年出现,当时被称为平衡二叉B树,后来1978年被修改为如今的“红黑树”

★它是一种特殊的二叉查找树,红黑树的每一个节点上都有存储位表示节点的颜色

★每一个节点可以是红或者黑;红黑树不是高度平衡的,它的平衡是通过“红黑规则实现的”

在这里插入图片描述

(1)红黑树与二叉查找树的区别

**平衡二叉树:**查找效率高

​ ★高度平衡

​ ★当左右子树高度差超过1时,通过旋转保持平衡

红黑树:增删改查效率都很高

​ ★是一个二叉查找树

​ ★但 不是高度平衡的

​ ★条件:特有的红黑规则

(2)红黑树的红黑规则

​ ①每一个节点或是红色的,或是黑色的

​ ②根节点必须是黑色的

​ ③如果一个节点没有子节点或者没有父节点,则该节点相应的指针属性值为nil,这些Nil视为叶节点,每个叶节点Nil是黑色的

​ ④如果某一个节点是红色的,那么它的子节点必须是黑色的(不能出现两个红色节点相连的情况)

​ ⑤对每一个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同数目的黑色节点

(3)红黑树添加节点的规则

★默认颜色:添加节点默认是红色的(效率高)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值