美文网首页
数据结构|堆和树

数据结构|堆和树

作者: rivrui | 来源:发表于2020-05-28 22:17 被阅读0次

    堆是一种比较特殊的数据结构,可以看成一颗树的数组对象。

    • 堆中的某个节点的值总是不大于或不小于其父节点的值
    • 堆是一颗完全二叉树
      按照根节点是最大值还是最小值,分为了大顶堆和小顶堆。
      image
      显然,堆的元素序列满足了以下条件
      k_{i}\le k_{2i},k\le k_{2i+1}
      或者
      k_{i}\ge k_{2i},k\ge k_{2i+1}
      常见的堆有二叉堆、斐波那契堆等。堆有序,常用作数组中的排序,称为堆排序。

    图由有限个节点V和边的结合E组成。两个顶点之间存在一条边,表示两个顶点具有相邻关系。图中的结点我们一般称为顶点。

    image
    图较为复杂,分别有邻接矩阵 、邻接表、十字链表、邻接多重表、边集数组等存储结构。
    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()
        }
    }
    

    代码来自https://www.jianshu.com/p/bce71b2bdbc8

    相关文章

      网友评论

          本文标题:数据结构|堆和树

          本文链接:https://www.haomeiwen.com/subject/zzbzahtx.html