- 浏览: 348019 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
pacoson:
感谢楼主。请受小生一拜。
ANT预编译JSP -
zhuhongming123:
一楼的同学Lucene4.* 以上的 已经改成了Numeric ...
Lucene日期排序及组合查询 -
ywjk520:
RangeQuery在哪个包里?
Lucene日期排序及组合查询 -
willwen:
有个疑问,楼主,为何初始化bits 从txt读取已有的网址是直 ...
布隆过滤器(Bloom Filter)之java实例 -
yu_226528:
还不如没有呢
jFreeChart 在jsp页上实现简单的折线图、柱状图
用java实现的一个树的存储结构,以及存储和取出树信息
package pattern; import java.util.List; import java.util.ArrayList; public class TreeNode implements java.io.Serializable { private int parentId; private int selfId; protected String nodeName; //protected Point p; protected TreeNode parentNode; protected List<TreeNode> childList; public TreeNode() { initChildList(); } public TreeNode(String nodeName,int selfId,int parentId) { // this.setParentNode(parentNode); this.setNodeName(nodeName); this.setParentId(parentId); this.setSelfId(selfId); initChildList(); } public TreeNode(TreeNode parentNode,String nodeName,int selfId,int parentId) { this.setParentNode(parentNode); this.setNodeName(nodeName); this.setParentId(parentId); this.setSelfId(selfId); initChildList(); } public boolean isLeaf() { if (childList == null) { return true; } else { if (childList.isEmpty()) { return true; } else { return false; } } } public void addChildNode(TreeNode treeNode) { initChildList(); childList.add(treeNode); } public void initChildList() { if (childList == null) childList = new ArrayList<TreeNode>(); } public List<TreeNode> getElders() { //havn't finish! 参见另一个版本。 List<TreeNode> elderList = new ArrayList<TreeNode>(); return elderList; } public List<TreeNode> getJuniors() { //havn't finish! List<TreeNode> juniorList = new ArrayList<TreeNode>(); return juniorList; } public List<TreeNode> getChildList() { return childList; } public void deleteNode() { TreeNode parentNode = this.getParentNode(); int id = this.getSelfId(); if (parentNode != null) { parentNode.deleteChildNode(id); } } public void deleteChildNode(int childId) { List<TreeNode> childList = this.getChildList(); int childNumber = childList.size(); for (int i = 0; i < childNumber; i++) { TreeNode child = childList.get(i); if (child.getSelfId() == childId) { childList.remove(i); return; } } } public boolean insertJuniorNode(TreeNode treeNode) { int juniorParentId = treeNode.getParentId(); if (this.parentId == juniorParentId) { addChildNode(treeNode); return true; } else { // List<TreeNode> childList = this.getChildList(); // int childNumber = childList.size(); // boolean insertFlag; // // for (int i = 0; i < childNumber; i++) { // TreeNode childNode = childList.get(i); // insertFlag = childNode.insertJuniorNode(treeNode); // if (insertFlag == true) // return true; // } // return false; TreeNode findnode=this.findTreeNodeById(juniorParentId); if(findnode!=null) { findnode.getChildList().add(treeNode); return true; } return false; } } public TreeNode findTreeNodeById(int id) { if (this.selfId == id) return this; if (childList.isEmpty() || childList == null) { return null; } else { int childNumber = childList.size(); for (int i = 0; i < childNumber; i++) { TreeNode child = childList.get(i); TreeNode resultNode = child.findTreeNodeById(id); if (resultNode != null) { return resultNode; } } return null; } } public void traverse() { if (selfId < 0) return; print(this.selfId); if (childList == null || childList.isEmpty()) return; int childNumber = childList.size(); for (int i = 0; i < childNumber; i++) { TreeNode child = childList.get(i); child.traverse(); } } public void print(String content) { System.out.println(content); } public void print(int content) { System.out.println(String.valueOf(content)); } public void setChildList(List<TreeNode> childList) { this.childList = childList; } public int getParentId() { return parentId; } public void setParentId(int parentId) { this.parentId = parentId; } public int getSelfId() { return selfId; } public void setSelfId(int selfId) { this.selfId = selfId; } public TreeNode getParentNode() { return parentNode; } public void setParentNode(TreeNode parentNode) { this.parentNode = parentNode; } public String getNodeName() { return nodeName; } public void setNodeName(String nodeName) { this.nodeName = nodeName; } } ///////////////////////////////////////////////////////////////// package pattern; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; public class TreeHelper implements java.io.Serializable { private TreeNode root; private List<TreeNode> tempNodeList; public TreeHelper() { } public TreeHelper(List<TreeNode> treeNodeList) { tempNodeList = treeNodeList; generateTree(); } public void generateTree() { HashMap nodeMap = putNodesIntoMap(); putChildIntoParent(nodeMap); } protected HashMap putNodesIntoMap() { HashMap nodeMap = new HashMap<String, TreeNode>(); Iterator it = tempNodeList.iterator(); while (it.hasNext()) { TreeNode treeNode = (TreeNode) it.next(); int id = treeNode.getSelfId(); String keyId = String.valueOf(id); nodeMap.put(keyId, treeNode); } return nodeMap; } protected void putChildIntoParent(HashMap nodeMap) { Iterator it = nodeMap.values().iterator(); while (it.hasNext()) { TreeNode treeNode = (TreeNode) it.next(); int parentId = treeNode.getParentId(); if(parentId==0) { this.setRoot(treeNode); } else if(parentId!=treeNode.getSelfId()) { String parentKeyId = String.valueOf(parentId); if (nodeMap.containsKey(parentKeyId)) { TreeNode parentNode = (TreeNode) nodeMap.get(parentKeyId); if (parentNode == null) { return; } else { parentNode.addChildNode(treeNode); System.out.println("childId: " +treeNode.getSelfId()+" "+ "parentId: "+parentNode.getSelfId()); } } } } } protected void initTempNodeList() { if (this.tempNodeList == null) { this.tempNodeList = new ArrayList<TreeNode>(); } } public void addTreeNode(TreeNode treeNode) { initTempNodeList(); this.tempNodeList.add(treeNode); } public boolean insertTreeNode(TreeNode treeNode) { boolean insertFlag = root.insertJuniorNode(treeNode); return insertFlag; } public TreeNode getRoot() { return root; } public void setRoot(TreeNode root) { this.root = root; } public List<TreeNode> getTempNodeList() { return tempNodeList; } public void setTempNodeList(List<TreeNode> tempNodeList) { this.tempNodeList = tempNodeList; } public static void main(String[] args) { } }
发表评论
-
java用绑定变量调用Oracle
2011-03-11 16:59 1085在JAVA中的SQL 语句的编 ... -
java 实现压缩与解压缩ZIP
2010-08-18 10:17 852压缩的 import java.io.BufferedIn ... -
Java中对TreeMap中文排序
2010-08-17 18:20 1889package org.hsyd.test; ... -
java 卸载动态链接库
2010-06-21 11:53 1915import java.lang.reflect.Field; ... -
java数据库连接池实现
2010-02-05 11:21 768.package cc.vicp.eden.plug; ... -
Java NIO原理和使用
2010-01-16 14:29 1647Java NIO非堵塞应用通常适用用在I/O读写等方面,我们知 ... -
java排序全实现
2009-12-17 11:40 9301. package sort; 2. ... -
Java对各种文件的操作
2009-12-12 22:23 989java中提供了io类库,可以轻松的用java实现对文件的各种 ... -
直接由Java获取文件的创建时间
2009-11-11 11:22 3028import java.io.*; public cla ... -
非常实用的myeclipse快捷键
2009-08-13 22:24 1205技巧:取消自动validation validation有一堆 ... -
计算工作日和自然日
2009-06-24 19:21 3334用Java写一个倒计时程序,比如输入一个日期,格式为20090 ... -
文件排序后进行文本复制
2009-06-24 18:48 990现将TEXT1.TXT中的文本内容 复制到TEXT2.TXT中 ... -
getResourceAsStream的用法
2009-06-24 18:28 2594getResourceAsStream 用法大致有以下几种: ... -
将一首古诗竖着排序从右往左读
2009-06-24 17:36 3139import java.util.ArrayList; ... -
计算两个日期之间相差的天数
2009-06-24 16:47 2022程序经过一系列处理,得到两个string类型的时间值,一个值的 ... -
如何得到一年的所有星期二的日期?
2009-06-24 16:42 1445import java.text.DateFormat; ... -
根据格式日期转换
2009-06-24 16:39 910根据一个TimeZone的时间,比如一个“Africa/Acc ... -
当输入一个年月份的时候,输出这个月份的最后一天,比如输入: 2006年5月 就输出5月份的最后一个日
2009-06-24 16:00 1166import java.text.ParseException ... -
读取一个文本文档,例如有1~10行,要求按10~1行的顺序输出.并保存予原文件.
2009-06-24 15:49 1354import java.io.File; import ... -
编写一个辅助小学生学习乘法的程序
2009-06-22 16:39 1626编写一个辅助小学生学习乘法的程序。使用一个Random对象产生 ...
相关推荐
在Java开发中,动态树形菜单和分页是常见的需求,尤其在构建Web应用程序时,它们对于用户界面的交互性和数据管理的效率至关重要。本文将深入探讨这两个概念以及如何在Java环境中实现它们。 首先,我们来看动态树形...
从普通Java对象中建立树形结构的过程涉及到算法设计与优化。原始数据通常是扁平化存储的,需要通过特定的算法将其转换为具有层次结构的树形数据。在教师信息系统的基本信息模块中,地址信息的管理是构建树形结构的一...
在Java中实现二叉排序树,我们通常会定义一个`Node`类来表示树的节点,它包含键、值以及左右子节点的引用。例如: ```java class Node { int key; Object value; Node left, right; public Node(int item) { ...
Java标准树结构是一种在编程中广泛使用的数据结构,它基于节点的概念,每个节点可以有零个、一个或多个子节点,形成层次化的组织。在Java中,标准树结构通常指的是`java.util.TreeSet`和`java.util.TreeMap`类,它们...
Java实现的KD树是一种在高维空间中进行高效查询的数据结构。KD树(K-Dimensional Tree)是二叉树的一种变体,特别适用于处理多维数据。它的名称来源于“K Dimensional”,其中“K”代表数据的维度数。在机器学习、...
在Java编程语言中,构建一个目录树控件是常见的需求,尤其在开发文件管理系统或桌面应用程序时。这个控件能够直观地展示文件系统的层级结构,使用户能够方便地浏览和操作文件和文件夹。以下是对如何实现Java目录树...
本文将深入探讨如何在Java环境中实现B+树,包括其基本概念、特性以及如何用Java代码来构建和操作B+树。 首先,B+树是一种自平衡的多路搜索树,它的主要特点是所有叶子节点都在同一层,并且每个非叶子节点只存储键值...
总结起来,实现“java解析xml动态生成树形菜单结构”的项目,需要掌握以下核心知识点: 1. Java的DOM解析XML,构建树形数据结构。 2. 设计和实现无限层级的树形菜单数据模型。 3. 使用`JSTree`库在前端渲染树形菜单...
在Java中实现哈夫曼树,我们可以分为以下几个步骤: 1. **哈夫曼编码**:哈夫曼编码是哈夫曼树的基础,它是为每个字符分配一个唯一的二进制码,使得字符出现频率越高,其编码越短。哈夫曼编码的过程是通过构造...
红黑树(Red-Black Tree)是一种自平衡的二叉查找树,它的设计目标是保持树的平衡,从而在插入、删除和查找操作时都能保持较高的效率。在Java中,红黑树主要体现在`java.util.TreeMap`和`java.util.TreeSet`这两个类...
树是一种非线性数据结构,相较于线性表、栈、队列等线性结构,树提供了更复杂且丰富的组织方式。在树中,数据元素(节点)通过分支相互连接,形成了一个层次化的结构。树由一个或多个节点组成,其中只有一个根节点,...
在Java中实现二叉排序树,我们需要定义一个Node类来表示树的节点,包含键值、左子节点和右子节点。然后创建一个BST类,包含插入、查找和删除等基本操作。以下是一个简单的Java实现: ```java public class Node { ...
Java树形菜单是一种在Web应用中常用于展示层次结构数据的交互式组件。dhtmlxTree是其中一种流行的JavaScript库,它可以与Java后端服务配合,用于构建动态、可操作的树状视图。本教程将详细介绍如何使用dhtmlxTree来...
4. **递归**:如果树的每一层都是由较小的相同形状构成,那么递归函数可能被用来简化代码并创建多级分支。 5. **字符串操作**:可能涉及到字符串的连接来创建带有空格或星号的行,形成树的形状。 6. **变量**:使用...
这种特性使得二叉排序树在插入、删除和查找操作上有较高的效率。 在Java中实现二叉排序树,我们通常会创建一个名为`BinarySearchTree`或`BSTNode`的类来表示树的结构。以下是一个简单的`BSTNode`类的实现: ```...
这个特性使得二叉查找树在查找、插入和删除操作时具有较高的效率。 在Java中,我们可以用类来表示二叉查找树的节点。一个简单的节点类可以这样定义: ```java public class TreeNode { int val; TreeNode left; ...
通过这种方式,R树能够以相对较低的计算复杂度进行近似最近邻搜索、范围查询等操作。 `RTree.java` 是R树的主要实现类,它可能包含构建、插入、删除和查询等基本操作。`AbstractNode.java` 作为抽象节点类,可能是...
哈夫曼树是一种特殊的二叉树,也称为最优二叉树或最小带权路径长度树,它的构造原则是:频率较高的字符其在树中的路径较短,从而实现数据的高效存储。哈夫曼编码则是利用哈夫曼树进行编码,使得高频字符用较短的二...
本项目涵盖了三种重要的树形数据结构的Java实现:红黑树(RBTree)、二叉平衡树(AVLTree)以及二叉排序树(BSTree)。这些数据结构在处理大量数据时,能够提供高效的插入、删除和查找操作,广泛应用于数据库索引、...
在Java语言中,实现哈夫曼树可以帮助我们理解和掌握数据结构与算法的核心概念。 哈夫曼树的基本思想是基于贪心策略,通过构建最小带权路径长度(Minimum Weighted Path Length, MWPL)的二叉树来达到数据编码的最...