最近面试常问的的:堆;什么是最小堆,什么是最大堆;怎么插入一个元素

1、堆 被成为优先队列,也是一种二叉树的分布逻辑,堆结构可以用数组或树实现,堆分为最大堆和最小堆。堆又是一种特殊的二叉树。

最大堆:当父节点的键值总是大于或等于任何一个子节点的键值时为最大堆。

最小堆:当父节点的键值总是小于或等于任何一个子节点的键值时为最小堆。

2、二叉树的定义:二叉树(Binary Tree)是n(n≥0)个结点组成的有限集合,n=0时称为空二叉树;n>0的二叉树由一个根结点和两棵互不相交、分别称为左子树和右子树的子二叉树构成,二叉树也是递归定义的,在树种定义的度、层次等术语,同样适用于二叉树。

2.1、二叉树节点定义

public class BinaryNode<T extends Comparable> implements Serializable{

    public BinaryNode<T> left; 

    public BinaryNode<T> right; 

    public T data;

    public BinaryNode(T data,BinaryNode left,BinaryNode right){

        this.data=data;

        this.left=left;

        this.right=right;

    }

    public BinaryNode(T data){

        this(data,null,null);

    }

    /**

    * 判断是否为子节点

    */

    public boolean isLeaf(){

        return this.left==null&&this.right==null;

    }

}

2.2 二叉查找树

public class SearchBinaryTree<T extends Comparable> implements Tree<T> {

    //根结点

    protected BinaryNode<T> root;

    public BinarySearchTree(){

        root =null;

    }

    @Override

    public boolean isEmpty() {

        return false;

    }

    @Override

    public int size() {

        return 0;

    }

    @Override

    public int height() {

        return 0;

    }

    @Override

    public String preOrder() {

        return null;

    }

    @Override

    public String inOrder() {

        return null;

    }

    @Override

    public String postOrder() {

        return null;

    }

    @Override

    public String levelOrder() {

        return null;

    }

    @Override

    public void insert(T data) {

    }

    @Override

    public void remove(T data) {

    }

    @Override

    public T findMin() {

        return null;

    }

    @Override

    public T findMax() {

        return null;

    }

    @Override

    public BinaryNode findNode(T data) {

        return null;

    }

    @Override

    public boolean contains(T data) throws Exception {

        return false;

    }

    @Override

    public void clear() {

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一. Java基础部分.................................................
    wy_sure阅读 3,845评论 0 11
  • 目录 1. 栈和队列1.用两个队列实现栈2.用两个栈实现队列3.实现一个栈,可以用常数级时间找出栈中的最小值4.判...
    MigrationUK阅读 3,060评论 4 20
  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 4,292评论 0 16
  • 堆是一棵满足一定性质的二叉树,具体的讲堆具有如下性质:父节点的键值总是不大于它的孩子节点的键值(小顶堆), 堆可以...
    9527Roy阅读 667评论 0 0
  • 今晚安静地坐在客厅,捧起书本专心致志地朗读。读了多日毕淑敏新作《星光下的灵魂》,当属今天最动心入魂。到...
    zhanghezhen阅读 275评论 0 4