java中的树_java回顾之树

本文回顾了Java中的树数据结构,重点讲解了二叉树的概念,包括二叉查找树的特性以及如何通过排序获取有序元素。进一步探讨了二叉平衡树,强调了平衡树对查找效率的重要性,并介绍了四种旋转操作来保持平衡。最后,阐述了红黑树作为相对平衡的二叉查找树,其在Java集合中的应用及其特点。
摘要由CSDN通过智能技术生成

java回顾之树

一、计算机中的树

80d4ab1d4dfbec3fedb0a9be9ce7a7ed.png 1.2、二叉树

如果书中的每个节点的子节点的个数不超过2,那么该树就是一个二叉树

c5c1fde83e986858f8f8ed84b8f2765f.png

1.3二叉查找树

1、左子树上所有的节点的值均小于他的父节点的值

2、右子树上所有的节点值均大于他的父节点的值

3、每一个子节点最多有两个子树

二叉查找树的排序:按照左中右的方式就能够获取到从小到大排列的元素。

049184947e813e7053b1c4e20ee777f7.png

1.4二叉平衡树

二叉平衡树是一种特殊的二叉查找树,二叉平衡树最高高度和最低高度高度差绝对值不大于1

平衡树可以提高查找的效率

d5d8eae86a4f22e7f29d087a6e7265a4.png

旋转可以把不平衡的树变成平衡的树

左旋

左旋就是把左边的元素往下放

86c009c9d689b7f0377bfef63df03d72.png

右旋

右旋就是把右边的元素往下放

0c4f80bcaa73ea5e9743df169f4629c1.png

旋转的目的就是把不平衡的二叉查找树变成平衡的二叉查找树。

不平衡的情况有四种

左左   右旋

左右   先对左子树进行左旋,再对整个树进行右旋

右右   左旋

右左  先对右子树进行右旋,再对整个树进行左旋

b8bed7503316d2bf6c174d0c9eee9ea2.png

0cf4340a11597fde33abc7a56fd56f2b.png

6a7f65feb2f1a6b308b04e7678b7fd8d.png

1.5红黑树

红黑树是一个相对平衡的二叉查找树,他打不到绝对的平衡但是他不会出现瘸子的现象,可以提高查找效率

java中有集合底层就是用红黑树。

特点:

1、每一个节点或是红色的,或者是黑色的

2、根节点必须是黑色

3、每个叶节点(Nil)是黑色的,如果一个节点没有子节点,则该节点相应的指针属性值为 Nil,这些Nil视为叶节点

4、如果某一个节点是红色,那么他的子节点必须是黑色,不能出现两个红色节点相连的情况

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

9acaf7a3363c5001661f40217e8f0073.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值