![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
嘟嘟还没长大
这个作者很懒,什么都没留下…
展开
-
Java实现堆(最大堆)
1、什么是堆 现在有这么一个需求,设计一个结构,满足两个操作要求: 删除时,返回该结构的最大值或者最小值的元素 往结构中新增元素 问题:如何组织优先这种结构? 一般数组、链表? 有序数组或者链表? 二叉搜索树或者AVL树? 结构 插入 删除 数组 插到数组尾部时间复杂度O(n) 查找最大或者最小值,删除后需要移动元素,时间复杂度O(2n) 链表 插入到链表头部,时间复杂度 O(1) 查找最大或者最小值,删除结点,时间复杂度O(n) 有序数组 查找插入位置,插入后移动元素并且插原创 2020-10-16 17:34:26 · 1379 阅读 · 2 评论 -
平衡二叉树(Java实现)
1、什么是平衡二叉树 平衡因子(Balance Factor) 简称BF:BF(T) = h(l) - h(r),其中 h(l)和 h(r)分别是T的左、右子树的高度。 平衡二叉树(Balance Binary Tree)(AVL树) 空树,或者任一节点左、右子树的高度绝对值不超过1,|BF(T)|<=1。本质是一颗改进后的二叉搜索树。 2、平衡二叉树的调整 RR旋转 RR旋转代码实现 //必须要有一个右节点 //将A和B做右单旋,且更新A和B的树高度 //返回新的根节点B private原创 2020-10-15 16:24:49 · 1348 阅读 · 1 评论