二叉查找树(AVL)插入算法Java实现
来源:互联网 发布:哥伦比亚淘宝旗舰店 编辑:程序博客网 时间:2024/06/06 03:10
public static class Node {
int data;
Node left;
Node right;
int height;
};
public int Height(Node p) {
if (p == null) {
return -1;
} else {
return p.height;
}
}
public Node rightRotate(Node k2)
{
Node k1;
k1 = k2.left;
k2.left = k1.right;
k1.right = k2;
k2.height = Math.max(Height(k2.left), Height(k2.right)) + 1;
k1.height = Math.max(Height(k1.left), k2.height) + 1;
return k1;
}
public Node DoubleRightRotate(Node k3) {
k3.left = rightRotate(k3.left);
return rightRotate(k3);
}
public Node Insert(int data, Node root) {
if (root == null) {
root = new Node();
root.data = data;
root.height = 0;
root.left = root.right = null;
} else if (data < root.data) {
root.left = Insert(data, root.left);
if (Height(root.left) - Height(root.right) == 2) {
if (data < root.left.data) {
root = rightRotate(root);
} else {
root.left = rightRotate(root.left);
root = rightRotate(root);
}
}
} else if (data < root.data) {
root.right = Insert(data, root.right);
if (Height(root.right) - Height(root.left) == 2){
if (data > root.right.data) {
root = leftRotate(root);
} else {
root.left = leftRotate(root.left);
root = leftRotate(root);
}
}
}
root.height = Math.max(Height(root.left), Height(root.right)) + 1;
return root;
}
0 0
- 二叉查找树(AVL)插入算法Java实现
- 平衡二叉树(AVL)--查找、删除、插入(Java实现)
- 平衡二叉树(AVL)的插入、删除、查找的java实现
- 算法学习 - 平衡二叉查找树实现(AVL树)
- AVL树-自平衡二叉查找树(Java实现)
- AVL树-自平衡二叉查找树(Java实现)
- 平衡二叉查找树(AVL)的查找、插入、删除
- 平衡二叉查找树(AVL)的查找,插入,删除
- 平衡二叉查找树 AVL 的实现
- 平衡二叉树(AVL树)算法 Java实现
- AVL二叉查找树
- 平衡二叉查找树(AVL)的插入
- 查找、检索 算法-总结3 平衡二叉查找树 [AVL]
- 二叉查找树--查找、删除、插入(Java实现)
- (Java实现)二叉查找树--查找、删除、插入
- (Java实现)二叉查找树--查找、删除、插入
- 二叉查找树--查找、删除、插入(Java实现)
- java实现二叉查找树(插入、删除、遍历、查找)
- Hive实战
- 977dh用vbs通过wsh创建桌面快捷方式,快速启动,修改ie主页的恶意代码 ...
- 【数据库】基础知识总结
- NaCI SDK安装
- 【转】SIFT特征提取分析
- 二叉查找树(AVL)插入算法Java实现
- AndroidTV桌面BriskTVLanucher
- [转]如何成为主管
- 进程字典与ets
- asp.net TreeView的选中CheckBox触发事件(父对象选中子对象全选)
- 常用的window.onload等 也有执行顺序影响
- Football
- 高效排序算法(希尔排序)
- ubuntu 下vim修改tab键为4个空格