MyList.LinearList参见链接
MyTree.TreeNode参见链接
#Heap

package MyHeap;public interface Heap {abstract public int size();abstract public int maxSize();abstract public boolean empty();abstract public boolean full();abstract public Comparable top();abstract public Comparable pop();abstract public Heap push(Comparable object);abstract public void initialize(Comparable[] object);abstract public void output();
}

#MaxHeap

package MyHeap;import java.util.Random;import MyList.LinearList;public class MaxHeap implements Heap {public static void main(String[] args){MaxHeap heap=new MaxHeap();Random random=new Random();for(int i=0;i<100;i++){heap.push(random.nextInt(1000));}heap.output();System.out.println("Size:"+heap.size());for(int i=0;i<100;i++){System.out.print(heap.pop()+" ");System.out.print("\r\n");}System.out.print("\r\n");}private int MaxSize;private MyList.LinearList List;public MaxHeap(){MaxSize=-1;List=new LinearList();}public MaxHeap(int maxsize){MaxSize=maxsize;List=new LinearList();}@Overridepublic int size() {// TODO Auto-generated method stubreturn List.size();}@Overridepublic int maxSize() {// TODO Auto-generated method stubreturn MaxSize;}@Overridepublic boolean empty() {// TODO Auto-generated method stubreturn size()==0;}@Overridepublic boolean full() {// TODO Auto-generated method stubreturn size()==maxSize();}private int parent(int index){if(index>=size()||index<=0){return -1;}else{return (index-1)/2;}}private int leftChild(int index){int output=index*2+1;if(output>=size()||index<0){return -1;}else{return output;}}private int rightChild(int index){int output=index*2+2;if(output>=size()||index<0){return -1;}else{return output;}}@Overridepublic Comparable top() {// TODO Auto-generated method stubreturn (Comparable) List.at(0);}private void reformDown(int index){int leftchild=leftChild(index);int rightchild=rightChild(index);if(leftchild==-1&&rightchild==-1){return;}else if(leftchild==-1){if(((Comparable) List.at(rightchild)).compareTo((Comparable) List.at(index))==1){List.swap(index,rightchild);reformDown(rightchild);}else{return;}}else if(rightchild==-1){if(((Comparable) List.at(leftchild)).compareTo((Comparable) List.at(index))==1){List.swap(index,leftchild);reformDown(leftchild);}else{return;}}else if(((Comparable) List.at(leftchild)).compareTo((Comparable) List.at(rightchild))==1){List.swap(index, leftchild);reformDown(leftchild);}else{List.swap(index,rightchild);reformDown(rightchild);}}@Overridepublic Comparable pop() {// TODO Auto-generated method stubif(empty()){System.out.println("heap is empty");return null;}else{Comparable object=top();List.swap(0, size()-1);List.deleteByIndex(size()-1);reformDown(0);return object;}}private void reformUp(int index){int parent=parent(index);while(parent!=-1&&((Comparable) List.at(parent)).compareTo((Comparable) List.at(index))==-1){List.swap(parent, index);reformUp(parent);}}@Overridepublic Heap push(Comparable object) {// TODO Auto-generated method stubif(full()){System.out.println("heap is full");}else{List.insert(object);reformUp(size()-1);}return this;}@Overridepublic void initialize(Comparable[] object) {// TODO Auto-generated method stubList.setMaxLength(object.length);for(int i=0;i<object.length;i++){push(object[i]);}}@Overridepublic void output() {// TODO Auto-generated method stubList.output();}}

#MaxHblt

package MyHeap;import java.util.Random;import MyTree.TreeNode;public class MaxHblt implements Heap {public static void main(String[] args){MaxHblt hblt=new MaxHblt();Random random=new Random();for(int i=0;i<100;i++){hblt.push(random.nextInt(1000));}hblt.output();System.out.println("Size:"+hblt.size());System.out.println("Height:"+hblt.height());for(int i=0;i<100;i++){System.out.print(hblt.pop()+" ");System.out.print("\r\n");}System.out.print("\r\n");}private int MaxSize;private TreeNode Root;public MaxHblt(){MaxSize=-1;Root=new TreeNode();}public MaxHblt(int maxsize){MaxSize=maxsize;Root=new TreeNode();}@Overridepublic int size() {// TODO Auto-generated method stubreturn Root.size();}@Overridepublic int maxSize() {// TODO Auto-generated method stubreturn MaxSize;}@Overridepublic boolean empty() {// TODO Auto-generated method stubreturn size()==0;}@Overridepublic boolean full() {// TODO Auto-generated method stubreturn size()==maxSize();}public int height(){return Root.height();}@Overridepublic Comparable top() {// TODO Auto-generated method stubreturn Root.root();}private TreeNode combine(TreeNode hblt1,TreeNode hblt2){if(hblt1==null||hblt1.size()==0){return hblt2;}else if(hblt2==null||hblt2.size()==0){return hblt1;}else{TreeNode node;if((hblt1.root()).compareTo(hblt2.root())==1){node=new TreeNode(hblt1.root(),hblt1.leftChild(),combine(hblt1.rightChild(),hblt2));}else{node=new TreeNode(hblt2.root(),hblt2.leftChild(),combine(hblt2.rightChild(),hblt1));}if(node.leftChild()==null||node.leftChild().height()<node.rightChild().height()){node=new TreeNode(node.root(),node.rightChild(),node.leftChild());}return node;}}@Overridepublic Comparable pop() {// TODO Auto-generated method stubif(empty()){System.out.println("heap is empty");return null;}else{Comparable object=top();Root=combine(Root.leftChild(),Root.rightChild());return object;}}@Overridepublic Heap push(Comparable object) {// TODO Auto-generated method stubif(full()){System.out.println("heap is full");}else{TreeNode node=new TreeNode(object);Root=combine(Root,node);}return this;}@Overridepublic void initialize(Comparable[] object) {// TODO Auto-generated method stubfor(int i=0;i<object.length;i++){push(object[i]);}}@Overridepublic void output() {// TODO Auto-generated method stubRoot.preOrder();System.out.print("\r\n");}}

#MinHeap

package MyHeap;import java.util.Random;import MyList.LinearList;public class MinHeap implements Heap {public static void main(String[] args){MinHeap heap=new MinHeap();Random random=new Random();for(int i=0;i<100;i++){heap.push(random.nextInt(1000));}heap.output();System.out.println("Size:"+heap.size());for(int i=0;i<100;i++){System.out.print(heap.pop()+" ");System.out.print("\r\n");}System.out.print("\r\n");}private int MaxSize;private MyList.LinearList List;public MinHeap(){MaxSize=-1;List=new LinearList();}public MinHeap(int maxsize){MaxSize=maxsize;List=new LinearList();}@Overridepublic int size() {// TODO Auto-generated method stubreturn List.size();}@Overridepublic int maxSize() {// TODO Auto-generated method stubreturn MaxSize;}@Overridepublic boolean empty() {// TODO Auto-generated method stubreturn size()==0;}@Overridepublic boolean full() {// TODO Auto-generated method stubreturn size()==maxSize();}private int parent(int index){if(index>=size()||index<=0){return -1;}else{return (index-1)/2;}}private int leftChild(int index){int output=index*2+1;if(output>=size()||index<0){return -1;}else{return output;}}private int rightChild(int index){int output=index*2+2;if(output>=size()||index<0){return -1;}else{return output;}}@Overridepublic Comparable top() {// TODO Auto-generated method stubreturn (Comparable) List.at(0);}private void reformDown(int index){int leftchild=leftChild(index);int rightchild=rightChild(index);if(leftchild==-1&&rightchild==-1){return;}else if(leftchild==-1){if(((Comparable) List.at(rightchild)).compareTo((Comparable) List.at(index))==-1){List.swap(index,rightchild);reformDown(rightchild);}else{return;}}else if(rightchild==-1){if(((Comparable) List.at(leftchild)).compareTo((Comparable) List.at(index))==-1){List.swap(index,leftchild);reformDown(leftchild);}else{return;}}else if(((Comparable) List.at(leftchild)).compareTo((Comparable) List.at(rightchild))==-1){List.swap(index, leftchild);reformDown(leftchild);}else{List.swap(index,rightchild);reformDown(rightchild);}}@Overridepublic Comparable pop() {// TODO Auto-generated method stubif(empty()){System.out.println("heap is empty");return null;}else{Comparable object=top();List.swap(0, size()-1);List.deleteByIndex(size()-1);reformDown(0);return object;}}private void reformUp(int index){int parent=parent(index);while(parent!=-1&&((Comparable) List.at(parent)).compareTo((Comparable) List.at(index))==1){List.swap(parent, index);reformUp(parent);}}@Overridepublic Heap push(Comparable object) {// TODO Auto-generated method stubif(full()){System.out.println("heap is full");}else{List.insert(object);reformUp(size()-1);}return this;}@Overridepublic void initialize(Comparable[] object) {// TODO Auto-generated method stubList.setMaxLength(object.length);for(int i=0;i<object.length;i++){push(object[i]);}}@Overridepublic void output() {// TODO Auto-generated method stubList.output();}}

#MinHblt

package MyHeap;import java.util.Random;import MyTree.TreeNode;public class MinHblt implements Heap {public static void main(String[] args){MinHblt hblt=new MinHblt();Random random=new Random();for(int i=0;i<100;i++){hblt.push(random.nextInt(1000));}hblt.output();System.out.println("Size:"+hblt.size());System.out.println("Height:"+hblt.height());for(int i=0;i<100;i++){System.out.print(hblt.pop()+" ");System.out.print("\r\n");}System.out.print("\r\n");}private int MaxSize;private TreeNode Root;public MinHblt(){MaxSize=-1;Root=new TreeNode();}public MinHblt(int maxsize){MaxSize=maxsize;Root=new TreeNode();}@Overridepublic int size() {// TODO Auto-generated method stubreturn Root.size();}@Overridepublic int maxSize() {// TODO Auto-generated method stubreturn MaxSize;}@Overridepublic boolean empty() {// TODO Auto-generated method stubreturn size()==0;}@Overridepublic boolean full() {// TODO Auto-generated method stubreturn size()==maxSize();}public int height(){return Root.height();}@Overridepublic Comparable top() {// TODO Auto-generated method stubreturn Root.root();}private TreeNode combine(TreeNode hblt1,TreeNode hblt2){if(hblt1==null||hblt1.size()==0){return hblt2;}else if(hblt2==null||hblt2.size()==0){return hblt1;}else{TreeNode node;if((hblt1.root()).compareTo(hblt2.root())==-1){node=new TreeNode(hblt1.root(),hblt1.leftChild(),combine(hblt1.rightChild(),hblt2));}else{node=new TreeNode(hblt2.root(),hblt2.leftChild(),combine(hblt2.rightChild(),hblt1));}if(node.leftChild()==null||node.leftChild().height()<node.rightChild().height()){node=new TreeNode(node.root(),node.rightChild(),node.leftChild());}return node;}}@Overridepublic Comparable pop() {// TODO Auto-generated method stubif(empty()){System.out.println("heap is empty");return null;}else{Comparable object=top();Root=combine(Root.leftChild(),Root.rightChild());return object;}}@Overridepublic Heap push(Comparable object) {// TODO Auto-generated method stubif(full()){System.out.println("heap is full");}else{TreeNode node=new TreeNode(object);Root=combine(Root,node);}return this;}@Overridepublic void initialize(Comparable[] object) {// TODO Auto-generated method stubfor(int i=0;i<object.length;i++){push(object[i]);}}@Overridepublic void output() {// TODO Auto-generated method stubRoot.preOrder();System.out.print("\r\n");}}

Java实现堆,最大堆,最小堆,左高树,左低树相关推荐

  1. java 最小堆_堆排序 最大堆 最小堆 Java 实现

    堆 一点疑惑,堆排序是就地排序,所以空间复杂度是 O(1).但是,比如我有一个数组,建立一个最小堆,然后每次取出最小堆的顶点.建立最小堆需要额外空间? 不深究了,归并排序需要额外空间. 堆是完全二叉树 ...

  2. C++实现最大堆最小堆

    目录 堆和栈的区别 最大堆与最小堆 最大堆的操作 最大堆的插入操作 最大堆的弹出操作 最大堆的C++代码实现 最小堆概念 最小堆的插入操作 最小堆的弹出操作 最小堆的C++代码实现 最大堆最小堆的应用 ...

  3. Golang实现最大堆/最小堆

    Golang实现最大堆/最小堆 参考: https://yangjiahao106.github.io/2019/01/15/golang-%E6%9C%80%E5%A4%A7%E5%A0%86%E5 ...

  4. 【二叉堆】实现最小堆和最大堆

    最小堆和最大堆采用完全二叉树的形式来存储不同数字的序列,在topK问题中有广泛应用.其满足中间节点大于左子树和右子树上所有节点值的特点,为保证其存储.查找和删除的遍历,通常采用数组的形式进行构建. 本 ...

  5. 最大堆最小堆的实现(C语言)

    ---------------- 该篇文章经提醒有一些错误,暂时没有时间修改,请勿参考. 该篇文章经提醒有一些错误,暂时没有时间修改,请勿参考. ---------------- 堆是特殊的队列,从堆 ...

  6. 《徐徐道来话Java》:PriorityQueue和最小堆

    在讲解PriorityQueue之前,需要先熟悉一个有序数据结构:最小堆. 最小堆是一种经过排序的完全二叉树,其中任一非终端节点数值均不大于其左孩子和右孩子节点的值. 可以得出结论,如果一棵二叉树满足 ...

  7. C++STL中的最大堆,最小堆

    堆,优先队列,头文件和队列是同一个#include<queue> #include<iostream> #include<queue> using namespac ...

  8. C++ 最大堆最小堆与push_heap pop_heap

    make_heap:根据不同参数生成大顶堆或者小顶堆,默认大顶堆. make_heap(_RAIter,_RAIter) 默认生成大顶堆 make_heap(_RAIter,_RAIter,_Comp ...

  9. 最大堆、最小堆Java实现,解决TOP K问题

    一.基础知识 1.1 什么是最大(小)堆 最大堆,最小堆类似,以下以最小堆为例进行讲解. 最小堆是满足以下条件的数据结构: 它是一棵完全二叉树 所有父节点的值小于或等于两个子节点的值 1.2 什么是完 ...

  10. 堆 最小堆 最大堆 堆排序(小到大,大到小)

    导航 1.了解什么是堆 2.如何创建最小堆,最大堆 3.新增值在堆中如何进行 4.完整的堆排序,升序和降序(两种方式) ---------------------------------------- ...

最新文章

  1. 使用Mock.js进行独立于后端的前端开发
  2. Qt中的图像处理与绘制
  3. only SOY MILK IS NOT ENOUGH FOR BREAKFAST
  4. 查看Linux进程CPU过高具体的线程堆栈(不中断程序)
  5. mysql+tushare搭建本地数据库
  6. Android Studio:解决DataBinding v4包问题
  7. Atitit 微服务之道 attilax著 1. 什么是微服务架构? 1 1.1. 、微服务与SOA的关系 :微服务架架构师面向服务架构(SOA)的一种特定实现 2 1.2. 微服务与康威定律 2 1
  8. Affymetrix基因芯片小总结
  9. 120个常用货源网站,赶紧收藏!
  10. 【第六课】Smart 3d常见问题集锦
  11. Semantic UI 之 按钮 button
  12. 移动硬盘弹出文件或目录损坏且无法读取解决办法
  13. vue一维码,二维码生成
  14. hdu1052 Tian Ji -- The Horse Racing
  15. 小游戏——满天小星星
  16. linux 串口操作
  17. Excel怎么统计合并单元格数据
  18. 【全】各种颜色对应的 Hex code 和对应的 RGB 值
  19. 全球首届VueConf演讲PPT和视频免费公开
  20. 上海国际快递物流展浅谈快递自动化分拣设备市场“起风了”!

热门文章

  1. 国内云存储厂商酷盘宣布获2000万美元B轮投资
  2. PR字幕怎么去黑色背景
  3. Holoview--Introduction
  4. 从零开始使用Python编程DJI Tello
  5. Flume 常见配置zo
  6. BZOJ 4605 崂山白花蛇草水 权值线段树+K-D树
  7. 一个博弈游戏,据说智商130才看的懂
  8. 基于java面对对象编程范式笔记
  9. 《软件工程与计算(卷二)》-Chapter9-10-软件体系结构
  10. kotlin的学习记录