堆
堆是一种比较特殊的数据结构,可以看成一颗树的数组对象。
- 堆中的某个节点的值总是不大于或不小于其父节点的值
- 堆是一颗完全二叉树
按照根节点是最大值还是最小值,分为了大顶堆和小顶堆。
image
显然,堆的元素序列满足了以下条件
或者
常见的堆有二叉堆、斐波那契堆等。堆有序,常用作数组中的排序,称为堆排序。
图
图由有限个节点V和边的结合E组成。两个顶点之间存在一条边,表示两个顶点具有相邻关系。图中的结点我们一般称为顶点。
图较为复杂,分别有邻接矩阵 、邻接表、十字链表、邻接多重表、边集数组等存储结构。
class Edge<T>(val from: Vertex<T>,
val to: Vertex<T>,
val weight: Double? = 0.toDouble()) {
}
class Vertex<T>(var data: T? = null, var index: Int = 0) {
//val edgeList : List<EdgeList<T>> = emptyList()
val edges: ArrayList<Edge<T>> = ArrayList()
var visited = false
//var distance = 0
fun addEdge(edge: Edge<T>){
edges.add(edge)
}
override fun toString(): String {
return data.toString()
}
}
网友评论