1、树的节点包含一个数据元素,以及若干指向其子树的分支。节点拥有的子树的数量称为节点的度。节点的最大层次称为树的深度或高度。
2、二叉树是一种树形结构,其特点是每个节点至多有两棵子树,且子树有左右之分,次序不能随意颠倒。
3、满二叉树:一棵深度为k且有2^k - 1个节点的二叉树,称之为满二叉树。
4、完全二叉树:对一个深度为k,节点个数为n的二叉树,当且仅当每个节点都与深度为k的满二叉树中编号从1至n的节点一一对应时,称之为完全二叉树。
5、哈夫曼树:又称最优树,是一类带权路径长度最短的树。
6、二叉查找树(Binary Search Tree):对任一个节点,左子树的所有值都小于它,右子树的所有值都大于它。
7、AVL树:带有平衡条件的二叉查找树。
8、伸展树:任一个节点被访问后,它就要经过一系列的AVL树的旋转,将该节点放到根上。
9、B-树:另外一种常用的查找树。有几个特点,对于M阶的B树,首先,根节点如果不是叶子,则其子节点的数量在2-M之间。其次,除根之外,所有的非叶子节点的子节点数在M/2 - M之间。最后,所有的叶子节点有相同的深度。
BST树
节点的插入、删除、查询
/*
定义一颗BST树
*/
class BinNode<T extends Comparable<T>>{
public T data;//数据域
public BinNode<T> left;//左孩子
public BinNode<T> right;//右孩子
public BinNode(T data, BinNode<T> left, BinNode<T> right) {
this.data = data;
this.left = left;
this.right = right;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public BinNode<T> getLeft() {
return left;
}
public void se