堆结构

2022-09-14 20:23:41 浏览数 (1)

1、概述

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

2、堆数据结构的应用

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

二叉树的数据结构图

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

代码语言:javascript复制
//创建集合对象
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集合中取出来的

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

​ 结果如下:

0 人点赞