组团学

堆结构

阅读 (2343432)

1、概述

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

2、堆数据结构的应用

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

二叉树的数据结构图

image20200120143735572.png

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)从第二个元素开始,每个元素从根节点开始比较

​ 大:就作为右孩子

​ 小:就作为左孩子

​ 相等:就不搭理它

image20200120144534914.png

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

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

​ 结果如下:

image20200120144718347.png

需要 登录 才可以提问哦