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() {
}
}