- 浏览: 313060 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (243)
- Core Java (13)
- Java (12)
- Android (2)
- Lucene (3)
- J2EE (3)
- Hibernate (2)
- Jsp & Servlet (3)
- Struts2 (3)
- Spring (5)
- JSF (6)
- RichFaces (2)
- HTML & JS & DOM & CSS (87)
- browser (1)
- Ajax & A4J (2)
- Workflow (1)
- Maven (3)
- Linux (2)
- VM & VBOX (1)
- Tomcat (1)
- Cache (3)
- Others (36)
- design (1)
- PHP (1)
- Try.js (1)
- HTML5 && CSS3 && ECMAScript5 (26)
- 疯言疯语 (5)
- mongodb (2)
- Hardware Common Sence (1)
- RESTful (3)
- Nginx (2)
- web安全 (8)
- Page Design (1)
- web performance (1)
- nodejs (4)
- python (1)
最新评论
-
New_Mao_Er:
求最新的版本破解啊!!!
Omondo eclipseUML插件破解 -
konglx:
讲得仔细,谢了
全面分析 Spring 的编程式事务管理及声明式事务管理 -
cilendeng:
对所有post有效只能使用过滤器
说说Tomcat的Server.xml的URIEncoding=‘UTF-8’配置 -
jiulingchen:
mark了,灰常感谢!
JAVA中最方便的Unicode转换方法 -
anlaetion:
这算法可以有
js 字符串搜索算法
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.NoSuchElementException; /** * jBixbe debuggee: test insert and delete operation of a balanced tree data * structure. Using integer values read from keyboard as tree elements. * * @author ds-emedia */ public class BTree<T extends Comparable<T>> { private static BTree<Integer> tree = new BTree<Integer>(); private static BufferedReader reader = new BufferedReader( new InputStreamReader(System.in)); public static void main(String args[]) throws IOException { System.out.println("test balanced tree operations"); System.out.println("*****************************"); String input; Integer value; do { input = stringInput("please select: [i]nsert, [d]elete, [e]xit"); switch (input.charAt(0)) { case 'i': value = Integer.parseInt(stringInput("insert: "), 10); if (tree.isMember(value)) { System.out.println("value " + value + " already in tree"); } else { tree.insert(value); } break; case 'd': value = Integer.parseInt(stringInput("delete: "), 10); if (tree.isMember(value)) { tree.delete(value); } else { System.out.println(value + " not found in tree"); } break; } } while ((input.charAt(0) != 'e')); } private static String stringInput(String inputRequest) throws IOException { System.out.println(inputRequest); return reader.readLine(); } /* +++++++++++ instance declarations +++++++++++ */ private Node root; /** * Creates an empty balanced tree. */ public BTree() { root = null; } /** * Creates a balances tree using the given node as tree root. */ public BTree(Node root) { this.root = root; } /** * Inserts an element into the tree. */ public void insert(T info) { insert(info, root, null, false); } /** * Checks whether the given element is already in the tree. */ public boolean isMember(T info) { return isMember(info, root); } /** * Removes an elememt from the tree. */ public void delete(T info) { delete(info, root); } /** * Returns a text representation of the tree. */ public String toString() { return inOrder(); } /** * Returns all elements of the tree in in-order traversing. */ public String inOrder() { return inOrder(root); } /** * Returns all elements of the tree in pre-order traversing. */ public String preOrder() { return preOrder(root); } /** * Returns all elements of the tree in post-order traversing. */ public String postOrder() { return postOrder(root); } /** * Returns the height of the tree. */ public int getHeight() { return getHeight(root); } private void insert(T info, Node node, Node parent, boolean right) { if (node == null) { if (parent == null) { root = node = new Node(info, parent); } else if (right) { parent.right = node = new Node(info, parent); } else { parent.left = node = new Node(info, parent); } restructInsert(node, false); } else if (info.compareTo(node.information) == 0) { node.information = info; } else if (info.compareTo(node.information) > 0) { insert(info, node.right, node, true); } else { insert(info, node.left, node, false); } } private boolean isMember(T info, Node node) { boolean member = false; if (node == null) { member = false; } else if (info.compareTo(node.information) == 0) { member = true; } else if (info.compareTo(node.information) > 0) { member = isMember(info, node.right); } else { member = isMember(info, node.left); } return member; } private void delete(T info, Node node) throws NoSuchElementException { if (node == null) { throw new NoSuchElementException(); } else if (info.compareTo(node.information) == 0) { deleteNode(node); } else if (info.compareTo(node.information) > 0) { delete(info, node.right); } else { delete(info, node.left); } } private void deleteNode(Node node) { Node eNode, minMaxNode, delNode = null; boolean rightNode = false; if (node.isLeaf()) { if (node.parent == null) { root = null; } else if (node.isRightNode()) { node.parent.right = null; rightNode = true; } else if (node.isLeftNode()) { node.parent.left = null; } delNode = node; } else if (node.hasLeftNode()) { minMaxNode = node.left; for (eNode = node.left; eNode != null; eNode = eNode.right) { minMaxNode = eNode; } delNode = minMaxNode; node.information = minMaxNode.information; if (node.left.right != null) { minMaxNode.parent.right = minMaxNode.left; rightNode = true; } else { minMaxNode.parent.left = minMaxNode.left; } if (minMaxNode.left != null) { minMaxNode.left.parent = minMaxNode.parent; } } else if (node.hasRightNode()) { minMaxNode = node.right; delNode = minMaxNode; rightNode = true; node.information = minMaxNode.information; node.right = minMaxNode.right; if (node.right != null) { node.right.parent = node; } node.left = minMaxNode.left; if (node.left != null) { node.left.parent = node; } } restructDelete(delNode.parent, rightNode); } private int getHeight(Node node) { int height = 0; if (node == null) { height = -1; } else { height = 1 + Math.max(getHeight(node.left), getHeight(node.right)); } return height; } private String inOrder(Node node) { String result = ""; if (node != null) { result = result + inOrder(node.left) + " "; result = result + node.information.toString(); result = result + inOrder(node.right); } return result; } private String preOrder(Node node) { String result = ""; if (node != null) { result = result + node.information.toString() + " "; result = result + preOrder(node.left); result = result + preOrder(node.right); } return result; } private String postOrder(Node node) { String result = ""; if (node != null) { result = result + postOrder(node.left); result = result + postOrder(node.right); result = result + node.information.toString() + " "; } return result; } private void restructInsert(Node node, boolean wasRight) { if (node != root) { if (node.parent.balance == '_') { if (node.isLeftNode()) { node.parent.balance = '/'; restructInsert(node.parent, false); } else { node.parent.balance = '\\'; restructInsert(node.parent, true); } } else if (node.parent.balance == '/') { if (node.isRightNode()) { node.parent.balance = '_'; } else { if (!wasRight) { rotateRight(node.parent); } else { doubleRotateRight(node.parent); } } } else if (node.parent.balance == '\\') { if (node.isLeftNode()) { node.parent.balance = '_'; } else { if (wasRight) { rotateLeft(node.parent); } else { doubleRotateLeft(node.parent); } } } } } private void restructDelete(Node z, boolean wasRight) { Node parent; boolean isRight = false; boolean climb = false; boolean canClimb; if (z == null) { return; } parent = z.parent; canClimb = (parent != null); if (canClimb) { isRight = z.isRightNode(); } if (z.balance == '_') { if (wasRight) { z.balance = '/'; } else { z.balance = '\\'; } } else if (z.balance == '/') { if (wasRight) { if (z.left.balance == '\\') { doubleRotateRight(z); climb = true; } else { rotateRight(z); if (z.balance == '_') { climb = true; } } } else { z.balance = '_'; climb = true; } } else { if (wasRight) { z.balance = '_'; climb = true; } else { if (z.right.balance == '/') { doubleRotateLeft(z); climb = true; } else { rotateLeft(z); if (z.balance == '_') { climb = true; } } } } if (canClimb && climb) { restructDelete(parent, isRight); } } private void rotateLeft(Node a) { Node b = a.right; if (a.parent == null) { root = b; } else { if (a.isLeftNode()) { a.parent.left = b; } else { a.parent.right = b; } } a.right = b.left; if (a.right != null) { a.right.parent = a; } b.parent = a.parent; a.parent = b; b.left = a; if (b.balance == '_') { a.balance = '\\'; b.balance = '/'; } else { a.balance = '_'; b.balance = '_'; } } private void rotateRight(Node a) { Node b = a.left; if (a.parent == null) { root = b; } else { if (a.isLeftNode()) { a.parent.left = b; } else { a.parent.right = b; } } a.left = b.right; if (a.left != null) { a.left.parent = a; } b.parent = a.parent; a.parent = b; b.right = a; if (b.balance == '_') { a.balance = '/'; b.balance = '\\'; } else { a.balance = '_'; b.balance = '_'; } } private void doubleRotateLeft(Node a) { Node b = a.right; Node c = b.left; if (a.parent == null) { root = c; } else { if (a.isLeftNode()) { a.parent.left = c; } else { a.parent.right = c; } } c.parent = a.parent; a.right = c.left; if (a.right != null) { a.right.parent = a; } b.left = c.right; if (b.left != null) { b.left.parent = b; } c.left = a; c.right = b; a.parent = c; b.parent = c; if (c.balance == '/') { a.balance = '_'; b.balance = '\\'; } else if (c.balance == '\\') { a.balance = '/'; b.balance = '_'; } else { a.balance = '_'; b.balance = '_'; } c.balance = '_'; } private void doubleRotateRight(Node a) { Node b = a.left; Node c = b.right; if (a.parent == null) { root = c; } else { if (a.isLeftNode()) { a.parent.left = c; } else { a.parent.right = c; } } c.parent = a.parent; a.left = c.right; if (a.left != null) { a.left.parent = a; } b.right = c.left; if (b.right != null) { b.right.parent = b; } c.right = a; c.left = b; a.parent = c; b.parent = c; if (c.balance == '/') { b.balance = '_'; a.balance = '\\'; } else if (c.balance == '\\') { b.balance = '/'; a.balance = '_'; } else { b.balance = '_'; a.balance = '_'; } c.balance = '_'; } class Node { T information; Node parent; Node left; Node right; char balance; public Node(T information, Node parent) { this.information = information; this.parent = parent; this.left = null; this.right = null; this.balance = '_'; } boolean isLeaf() { return ((left == null) && (right == null)); } boolean isNode() { return !isLeaf(); } boolean hasLeftNode() { return (null != left); } boolean hasRightNode() { return (right != null); } boolean isLeftNode() { return (parent.left == this); } boolean isRightNode() { return (parent.right == this); } } }
[转自 :http://www.jbixbe.com/doc/tutorial/BTree.html ]
发表评论
-
Java 强制类型转换
2012-07-29 22:22 1092当两个整数相除时,小数点以后的数字会被截断,使得运算的结 ... -
Java 自动类型转换
2012-07-29 21:41 1802在程序中已经定义好了数据类型的变量,若是想用另一种数据类 ... -
Java 数据类型
2012-07-27 15:31 722看图说话: 如果想在程序中使用一个变量,就必须先声明 ... -
Dom4j解析XML的基本操作
2011-04-29 11:53 993要使用dom4j读写XML文档,需要先下载dom4j包dom4 ... -
利用ScriptEngine实现简单公式的计算
2011-03-22 14:07 2120Javascript中的eval函数功能十分强大,可以执行字符 ... -
Memcached Java客户端编程
2010-09-01 16:56 7796最近一直在做一个项目的前期设计工作,考虑到后期系统的扩展和性能 ... -
设计模式笔记
2010-08-16 21:29 748程式设计是思维具体化的一种方式,是思考如何解决问题的过程,设计 ... -
JAVA字符集编码
2010-07-23 14:34 7261. 概述 本文主要 ... -
23种Java设计模式
2010-04-20 16:49 1006创建型模式 1、FA ... -
Java虚拟机几个命令行参数说明
2010-02-22 00:19 1408一、运行class文件 执行带main方法的 ... -
JAVA中最方便的Unicode转换方法
2009-07-22 09:30 8187在命令行界面用native2asc ...
相关推荐
用Java实现B树。 它实现了B树。 参见 。 它与标准{@link java.util.Set}兼容。 它使用数组来减少LinkedList的内存分配开销,该开销更易于处理溢出和联接/合并操作。 因为它在添加键时使用数组,所以应将所有键的...
Java版本的Btree源码提供了在Java环境中实现B树的功能,这对于数据存储、数据库索引以及排序操作等场景具有重要意义。在这里,我们将深入探讨B树的基本概念,其在Java中的实现细节,以及如何利用这个源码来理解和...
这里我们关注的是“创建二叉树”的Java程序,这涉及到对二叉树概念的理解,以及如何用Java语言来实现它。 首先,我们要理解什么是二叉树。二叉树是每个节点最多有两个子节点的树形数据结构,通常分为左子节点和右子...
Java实现的搜索引擎是一种高效的信息检索系统,它利用了Java编程语言的强大功能来处理文本数据,构建索引,并执行复杂的查询操作。在这个系统中,我们主要关注三个关键知识点:全文搜索、搜索引擎架构以及Java多线程...
java笔试题算法btree4j:用纯 Java 编写的基于磁盘的前缀 B+-tree 什么是 Btree4j Btree4j 是用纯 Java 编写的基于磁盘的。 它非常快,甚至可以在笔记本电脑上使用。 使用 btree4j <groupId>io.github.myui ...
BTree索引的模拟实现(Java)——该项目是DHU研一《数据库系统实现》课程的实验作业在此保存一_BTree
5. **Java实现B树** 在Java中实现B树,我们可以创建一个`BTreeNode`类来表示节点,包含关键值数组、子节点数组和节点的度(子节点数量)。同时,需要定义一个`BTree`类,包含根节点、插入、查找和删除等方法。为了...
**B树(B-tree)是一种自平衡的查找树...通过分析`BTree`这个文件,我们可以看到B树的具体实现细节,包括节点结构、插入、查找和删除的算法。如果你需要进一步的帮助,可以研究这个文件或者在给定的博客中寻找答案。
在计算机科学中,B树(B-tree)是一种自平衡的多路查找树,它的设计目的是为了优化磁盘或网络存储环境下的数据检索效率。...在Java中实现B树需要理解其数据结构特点,并适当地处理插入、查找和删除操作,确保树的平衡。
【标题】"各种java程序的实现源码"揭示了这个压缩包主要包含的是用Java语言编写的程序源代码。Java是一种广泛使用的面向对象的编程语言,以其“一次编写,到处运行”的特性闻名,适用于跨平台应用开发。这些源码可能...
### Java简单实现二叉树知识点解析 #### 一、二叉树基本概念 二叉树是一种树形数据结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。二叉树在计算机科学中有着广泛的应用,如搜索算法、排序算法...
这里我们将详细探讨B树的概念、结构、以及如何用Java实现300行代码来完成B树的基本操作。 **B树的概念** B树是一种自平衡的多路查找树,其中每个节点可以有多个子节点,通常介于2到m之间,m称为B树的阶。B树的关键...
在实现B树的Java代码中,我们通常会创建一个`BTree`类,它包含节点类`Node`,节点类需要包含关键字数组、子节点数组以及指向父节点的引用。我们还需要定义插入、删除、查找和更新的方法,并确保在每次操作后,B树都...
BPlusTree_Java实现 package bplustree; import java.util.*; import com.xuedi.IO.*; import com.xuedi.maths.*; ////// DisposeRoot ///////中的key参数有些问题 public class BTree { //用于记录每个节点中...
6. `BTree.java`:这是B树的源代码文件,应包含B树的定义和主要方法,比如插入、删除、搜索等功能的实现。 7. `www.pudn.com.txt`:这可能是一个文本文件,可能包含了有关B树的额外说明、教程链接或其他资源,供...
`btree.java`可能包含了二叉树的相关操作,如查找、插入、删除等。 6. **Test文件**:`Test3_2.java`, `Test4_2.java`, `Test4_1.java`, `Test4_5.java`, `Test3_1.java`这些文件通常是单元测试代码,用来验证算法...
这是一个纯JavaWeb项目,采用MVC模式,即 模型(model)-视图(view)-控制器(controller),没有使用其他框架,采用的是纯servlet+jsp实现的一个简易选课JavaWeb项目,实现的功能如下:包括 **管理员 教师 学生** ...
Levent Divilioglu-2017年夏季待办事项: 附录将在此自述文件中创建DS_011软件包:BTree实现将完成DS_011软件包:AVLTree的实现将完成DS_012套装:骑士之旅将被展示DS_013套件:图表将完成DS_013封装:实施广度优先...
本节将详细讲解如何使用Java实现B+树,包括其基本概念、节点结构、树的构建、插入操作以及遍历方法。 首先,B+树是一种多路搜索树,其特性在于所有数据都存储在叶子节点中,而非叶子节点仅作为索引使用。这使得所有...