java 代码实现平衡二叉树
/**
* 平衡二叉搜索(排序)树
*
* 平衡二叉搜索树双称为AVL树,它也是一棵二叉搜索树,是对二叉搜索树的一种改进,或都是具有下列性质的二叉树:它
* 的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。
*
* 平衡因子(Balance Factor,BF)定义为该节点的左子树的深度减去其右子树的深度,则平衡二叉树上所有节点的平
* 衡因子只可能是-1、0和1。只要树上有一个节点的平衡因子的绝对值大于1,则该二叉树就是不平衡的了。
*
* 使用二叉排序树保持平衡的基本思想是:每当在二叉排序树中插入一个节点时,首先检查是否因插入而破坏了平衡,若
* 是,则找出其中的最小不平衡二叉树,在保持二叉排序树特性的情况下,调整最小不平衡子s树中节点之间的关系,以达
* 到新的平衡。所谓最小不平衡子树指离插入节点最近且以平衡因子的绝对值大于1的节点作为根的子树。
*
* 对于平衡二叉搜索树,保持树的平衡的基本机制就是旋转。旋转是对树的元素顺序进行调节。旋转的目的是消除由于临
* 时插入和删除对树的平衡产生的影响。
*
* 有四种旋转:
* 1)绕某元素左旋转
* 80 ← p 90
* /\ /\
* 60 90 ← r → 80 120
* /\ /\ /
* 85 120 60 85 100
*&n
相关文档:
Java中通过implements Serializable来实现对象的序列化。其实Serializable接口中并没有需要实现的方法,注明某个类implements Serializable只是为了标识或表明这个类可以被序列化。
那么什么是序列化呢,序列化又有什么作用呢?
一个类,或 ......
Swing中提供了JOptionPane类来实现类似Windows平台下的MessageBox的功能,同样在Java中也有,利用JOptionPane类中的各个static方法来生成各种标准的对话框,实现显示出信息、提出问题、警告、用户输入参数等功能。这些对话框都是模式对话框。
ConfirmDialog --- 确认对话框,提出问题,然后由用户自己来确认(按"Ye ......
LinkedList内部以链表形式存储数据
ArrayList内部以数组形式存储数据。
Vector同ArrayList,不过它与ArrayList比较起来是thread-safe的。
Hashtable是继承了Dictionary,是线程安全的。HashMap实现了Map接口,不是线程安全的。
如何保证线程安全的?每个修改容� ......
package Utils.Sort;
/**
*归并排序,要求待排序的数组必须实现Comparable接口
*/
public class MergeSort implements SortStrategy
{
private Comparable[] bridge;
/**
*利用归并排序� ......