阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

堆结构

111次阅读
没有评论

共计 626 个字符,预计需要花费 2 分钟才能阅读完成。

1、概述

堆是一种经过排序的树形数据结构,每个节点都有一个值,通常我们所说的堆的数据结构是指二叉树。所以堆在数据结构中通常可以被看做是一棵树的数组对象。而且堆需要满足一下两个性质:
(1)堆中某个节点的值总是不大于或不小于其父节点的值;
(2)堆总是一棵完全二叉树。

2、堆数据结构的应用

TreeSet 集合底层采用的就是二叉树 (更具体来说 TreeSet 集合底层采用的是红黑树,红黑树是二叉树的一种,具有自平衡的优点)

二叉树的数据结构图

堆结构

TreeSet 集合存储数据的代码演示

// 创建集合对象 TreeSet<Integer> ts = new TreeSet<Integer>(); // 往集合添加元素 //20,18,23,22,17,24,19,18,24 ts.add(20); ts.add(18); ts.add(23); ts.add(22); ts.add(17); ts.add(24); ts.add(19); ts.add(18); ts.add(24); // 遍历 for(Integer i:ts){System.out.println(i); } // 结果:17 18 19 20 22 23 24

元素是如何存储进 TreeSet 集合中去的

​(1)第一个元素存储的时候,直接作为根节点存储

​(2)从第二个元素开始,每个元素从根节点开始比较

​ 大:就作为右孩子

​ 小:就作为左孩子

​ 相等:就不搭理它

堆结构

元素是如何从 TreeSet 集合中取出来的

​ 从根节点开始,按照左、中、右的原则依次取出元素

​ 结果如下:

堆结构

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-06-06发表,共计626字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中