- 浏览: 3462310 次
- 性别:
- 来自: China
文章分类
- 全部博客 (536)
- ajax (1)
- Algorithm (14)
- Android (40)
- CSS/HTML... (2)
- defy (3)
- DesignPattern (2)
- dorado (0)
- Drools (6)
- English/日本語 (7)
- Flex (2)
- Framework (0)
- Google (3)
- hibernate (13)
- homework (3)
- HTML5 (0)
- IDE (29)
- java (45)
- javaee (7)
- Javascript (14)
- java组件 (5)
- jQuery (4)
- jsp (8)
- jsf (2)
- Linux (2)
- lucene (0)
- mysql (6)
- news (3)
- Oracle (8)
- other (4)
- PHP (5)
- Python (0)
- Software Engineering (3)
- spring (7)
- struts1.x (14)
- struts2.x (14)
- strolling in cloud (1)
- subject:javaEnhance (20)
- Tomcat (7)
- validator (3)
- 学习·方法·心得 (8)
- .NET (2)
- vba (6)
- groovy (5)
- grails (2)
- SWT (0)
- big data (1)
- perl (1)
- objective-c (50)
- product (1)
- mac (7)
- ios (188)
- ios-phone (2)
- ios-system (15)
- ios-network (5)
- ios-file (4)
- ios-db (1)
- ios-media (3)
- ios-ui (27)
- ios-openSource (6)
- ios-animation (5)
- ios-drawing (7)
- c (2)
- ios-app (2)
- ios-course (15)
- ios-runtime (14)
- ios-code (8)
- ios-thread (8)
- ios-LBS (2)
- ios-issue (1)
- ios-design (2)
- Jailbreak (2)
- cocos2d (0)
- swift (16)
- ios-framework (4)
- apple watch (4)
- ios-web (1)
- react native (3)
- TVOS (1)
- OpenGL (1)
最新评论
-
xiaobinggg:
...
Session机制详解 -
菜鸟学生会:
Drools规则工作流引擎开发教程网盘地址:http://pa ...
Drools入门-----------环境搭建,分析Helloworld -
wangyudong:
不是很好用,不支持自动化测试RESTful API,也不支持自 ...
Simple REST Client POST使用方法 -
Paul0523:
很棒的一篇文章,感谢楼主分享
Session机制详解 -
啸笑天:
获取原型对象的三种方法<script>functi ...
复习JavaScript面向对象技术
树的父节点存储实现
import java.util.*; public class TreeParent<E> { public static class Node<T> { T data; //记录其父节点的位置 int parent; public Node() { } public Node(T data) { this.data = data; } public Node(T data , int parent) { this.data = data; this.parent = parent; } public String toString() { return "TreeParent$Node[data=" + data + ", parent=" + parent + "]"; } } private final int DEFAULT_TREE_SIZE = 100; private int treeSize = 0; //使用一个Node[]数组来记录该树里的所有节点 private Node<E>[] nodes; //记录节点数 private int nodeNums; //以指定根节点创建树 public TreeParent(E data) { treeSize = DEFAULT_TREE_SIZE; nodes = new Node[treeSize]; nodes[0] = new Node<E>(data , -1); nodeNums++; } //以指定根节点、指定treeSize创建树 public TreeParent(E data ,int treeSize) { this.treeSize = treeSize; nodes = new Node[treeSize]; nodes[0] = new Node<E>(data , -1); nodeNums++; } //为指定节点添加子节点 public void addNode(E data , Node parent) { for (int i = 0 ; i < treeSize ; i++) { //找到数组中第一个为null的元素,该元素保存新节点 if (nodes[i] == null) { //创建新节点,并用指定的数组元素保存它 nodes[i] = new Node(data , pos(parent));; nodeNums++; return; } } throw new RuntimeException("该树已满,无法添加新节点"); } //判断树是否为空。 public boolean empty() { //根节点是否为null return nodes[0] == null; } //返回根节点 public Node<E> root() { //返回根节点 return nodes[0]; } //返回指定节点(非根节点)的父节点。 public Node<E> parent(Node node) { //每个节点的parent记录了其父节点的位置 return nodes[node.parent]; } //返回指定节点(非叶子节点)的所有子节点。 public List<Node<E>> children(Node parent) { List<Node<E>> list = new ArrayList<Node<E>>(); for (int i = 0 ; i < treeSize ; i++) { //如果当前节点的父节点的位置等于parent节点的位置 if (nodes[i] != null && nodes[i].parent == pos(parent)) { list.add(nodes[i]); } } return list; } //返回该树的深度。 public int deep() { //用于记录节点的最大深度 int max = 0; for(int i = 0 ; i < treeSize && nodes[i] != null ; i++) { //初始化本节点的深度 int def = 1; //m记录当前节点的父节点的位置 int m = nodes[i].parent; //如果其父节点存在 while(m != -1 && nodes[m] != null) { //向上继续搜索父节点 m = nodes[m].parent; def++; } if(max < def) { max = def; } } //返回最大深度 return max; } //返回包含指定值的节点。 public int pos(Node node) { for (int i = 0 ; i < treeSize ; i++) { //找到指定节点 if (nodes[i] == node) { return i; } } return -1; } public static void main(String[] args) { TreeParent<String> tp = new TreeParent<String>("root"); TreeParent.Node root = tp.root(); System.out.println(root); tp.addNode("节点1" , root); System.out.println("此树的深度:" + tp.deep()); tp.addNode("节点2" , root); //获取根节点的所有子节点 List<TreeParent.Node<String>> nodes = tp.children(root); System.out.println("根节点的第一个子节点:" + nodes.get(0)); //为根节点的第一个子节点新增一个子节点 tp.addNode("节点3" , nodes.get(0)); System.out.println("此树的深度:" + tp.deep()); } }
树的子节点链表实现
import java.util.*; public class TreeChild<E> { private static class SonNode { //记录当前节点的位置 private int pos; private SonNode next; public SonNode(int pos , SonNode next) { this.pos = pos; this.next = next; } } public static class Node<T> { T data; //记录第一个子节点 SonNode first; public Node(T data) { this.data = data; this.first = null; } public String toString() { if (first != null) { return "TreeChild$Node[data=" + data + ", first=" + first.pos + "]"; } else { return "TreeChild$Node[data=" + data + ", first=-1]"; } } } private final int DEFAULT_TREE_SIZE = 100; private int treeSize = 0; //使用一个Node[]数组来记录该树里的所有节点 private Node<E>[] nodes; //记录节点数 private int nodeNums; //以指定根节点创建树 public TreeChild(E data) { treeSize = DEFAULT_TREE_SIZE; nodes = new Node[treeSize]; nodes[0] = new Node<E>(data); nodeNums++; } //以指定根节点、指定treeSize创建树 public TreeChild(E data ,int treeSize) { this.treeSize = treeSize; nodes = new Node[treeSize]; nodes[0] = new Node<E>(data); nodeNums++; } //为指定节点添加子节点 public void addNode(E data , Node parent) { for (int i = 0 ; i < treeSize ; i++) { //找到数组中第一个为null的元素,该元素保存新节点 if (nodes[i] == null) { //创建新节点,并用指定数组元素来保存它 nodes[i] = new Node(data); if (parent.first == null) { parent.first = new SonNode(i , null); } else { SonNode next = parent.first; while (next.next != null) { next = next.next; } next.next = new SonNode(i , null); } nodeNums++; return; } } throw new RuntimeException("该树已满,无法添加新节点"); } //判断树是否为空。 public boolean empty() { //根节点是否为null return nodes[0] == null; } //返回根节点 public Node<E> root() { //返回根节点 return nodes[0]; } //返回指定节点(非叶子节点)的所有子节点。 public List<Node<E>> children(Node parent) { List<Node<E>> list = new ArrayList<Node<E>>(); //获取parent节点的第一个子节点 SonNode next = parent.first; //沿着孩子链不断搜索下一个孩子节点 while (next != null) { //添加孩子链中的节点 list.add(nodes[next.pos]); next = next.next; } return list; } //返回指定节点(非叶子节点)的第index个子节点。 public Node<E> child(Node parent , int index) { //获取parent节点的第一个子节点 SonNode next = parent.first; //沿着孩子链不断搜索下一个孩子节点 for (int i = 0 ; next != null ; i++) { if (index == i) { return nodes[next.pos]; } next = next.next; } return null; } //返回该树的深度。 public int deep() { //获取该树的深度 return deep(root()); } //这是一个递归方法:每棵子树的深度为其所有子树的最大深度 + 1 private int deep(Node node) { if (node.first == null) { return 1; } else { //记录其所有子树的最大深度 int max = 0; SonNode next = node.first; //沿着孩子链不断搜索下一个孩子节点 while (next != null) { //获取以其子节点为根的子树的深度 int tmp = deep(nodes[next.pos]); if (tmp > max) { max = tmp; } next = next.next; } //最后返回其所有子树的最大深度 + 1 return max + 1; } } //返回包含指定值的节点。 public int pos(Node node) { for (int i = 0 ; i < treeSize ; i++) { //找到指定节点 if (nodes[i] == node) { return i; } } return -1; } public static void main(String[] args) { TreeChild<String> tp = new TreeChild<String>("root"); TreeChild.Node root = tp.root(); System.out.println("根节点:" + root); tp.addNode("节点1" , root); tp.addNode("节点2" , root); tp.addNode("节点3" , root); System.out.println("添加子节点后的根节点:" + root); System.out.println("此树的深度:" + tp.deep()); //获取根节点的所有子节点 List<TreeChild.Node<String>> nodes = tp.children(root); System.out.println("根节点的第一个子节点:" + nodes.get(0)); //为根节点的第一个子节点新增一个子节点 tp.addNode("节点4" , nodes.get(0)); System.out.println("根节点的第一个子节点:" + nodes.get(0)); System.out.println("此树的深度:" + tp.deep()); } }
发表评论
-
qweqwe
2012-07-11 16:06 1江蛤蟆 一统江湖 -
123123123
2012-07-11 16:04 0<p>法轮</p> -
母牛繁殖问题
2011-12-30 13:08 3888question:农场的母牛寿命是5年,母牛第二年和第四年会繁 ... -
树形显示
2011-07-17 11:26 1676/** 树形结构应用十分广泛。 下面这段代码根据 ... -
求能除尽1至n的最小整数
2011-07-16 02:43 4012为什么1小时有60分钟,而不是100分钟呢?这是历史上的 ... -
java 四则运算 栈的实现
2011-07-15 13:42 13892import java.util.Stack; /* ... -
用1、2、3、3、4、5这六个数字,用java写一个程序,打印出所有不同的排列 要求:"4"不能在第三位,"3"与"5"不能相连。
2011-07-15 12:45 3412用1、2、3、3、4、5这六 ... -
【code】java红黑树
2011-06-28 10:07 3483import java.util.*; publi ... -
【code】java实现排序二叉树
2011-06-27 21:45 2900import java.util.*; publi ... -
【code】java创建哈夫曼树和实现哈夫曼编码
2011-06-27 17:31 12917创建哈夫曼树 主要思想: (1)对List集合中所有节点进 ... -
【code】java实现十种常见内部排序
2011-06-20 19:22 3121常见的内部排序: 下面介绍这十种常见内部排序(都是从 ... -
【code】java二叉树深(先中后)、广遍历
2011-06-19 16:55 1994import java.util.*; publi ... -
【code】java二叉树的实现
2011-06-17 22:50 5900二叉树的顺序存储 public class Array ... -
【code】java栈和队列实现
2011-06-16 22:11 4987顺序栈的实现 import java.util.Arrays ... -
【code】java线性表实现
2011-06-16 21:24 3703顺序线性表的实现 import java.util.A ...
相关推荐
【标题】:“Java 数据结构code”指的是在Java编程语言中实现的数据结构的代码示例。数据结构是计算机科学中组织和存储数据的方式,以便高效地访问和管理它们。Java作为一种面向对象的语言,提供了多种内置数据结构...
在本案例中,我们将探讨如何用Java实现ID3算法,这是一种早期的决策树学习算法,由Ross Quinlan于1986年提出。 ID3(Iterative Dichotomiser 3)算法基于信息熵和信息增益来选择最优特征进行分裂。信息熵是度量数据...
在这个名为"Rplus-java.zip"的压缩包中,包含了一系列的Java源代码文件,这些文件可能是实现R+树算法的一个Java库或项目。让我们一一解析这些文件: 1. `node.java`:这个文件可能定义了R+树的节点类,包含了节点的...
本教程将详细介绍哈夫曼树的构建过程以及其在Java中的实现。 哈夫曼编码的基本原理是通过赋予频率较高的字符较短的编码,频率较低的字符较长的编码,从而在总体上达到最优的编码效率。这个过程分为两个主要步骤:一...
哈夫曼编码在Java中的应用不仅限于文本压缩,例如在`huffmancode_java sms_compression`标签中提及,它还可以应用于短信压缩,节省通信资源。在现代信息技术中,数据压缩技术扮演着至关重要的角色,哈夫曼编码作为一...
决策树是一种常用的...总之,基于Java的ID3决策树实现涉及数据处理、熵和信息增益计算、决策树构建和预测等多个环节。理解并掌握这些知识,对于从事数据挖掘、机器学习以及人工智能相关工作的专业人士来说至关重要。
在压缩包"Tree-ID3 Java Code"中,包含了ID3决策树算法的Java源代码,用户可以在Eclipse环境下编译运行,观察算法对给定数据集的分类效果。此代码可作为一个基础框架,供开发者理解和学习决策树算法,也可以在此基础...
在这个Java程序中,`huffman()`函数负责构建哈夫曼树,而`code()`函数则负责分配编码。`main()`函数是整个流程的入口,初始化权重数组,创建并填充优先级队列,然后调用`huffman()`和`code()`函数完成编码过程,并...
5. `CodeGenerator.java`:代码生成器的实现。 6. `SNLCompiler.java`:整合以上各部分的主类,用于驱动整个编译过程。 7. `SNL.g4`或`SNL.jj`:ANTLR或JavaCC的语法定义文件。 8. 测试文件:包含SNL语言的源代码...
综上所述,`HuffmanCode_Java_SourceCode.rar`中包含的代码应该实现了从字符频率统计、哈夫曼树构建、编码和解码等一系列过程,从而提供了一种在Java环境中高效压缩和解压数据的方法。通过学习这段代码,开发者可以...
这个名为"cart_java_code.rar_CART 分类 java_cart_java_code"的压缩包包含了一个用Java语言实现的CART分类器的源代码。下面将详细解释CART算法的基本原理、分类过程以及Java实现的关键点。 CART算法主要由以下步骤...
在"SyntaxAnalyzer-code"这个文件中,很可能包含了实现这两个分析器的Java源代码。通常,源代码会包含以下几个部分: 1. 词法分析器类:使用正则表达式或其他方法定义记号,并创建一个迭代器以按顺序处理输入源代码...
这个“LR(0).rar_LR_LR java_LR(0)_parser code java_parser java”压缩包显然包含了用Java语言实现的LR(0)语法分析器的源代码。下面我们将深入探讨LR(0)解析器的工作原理、Java实现的关键点以及相关知识点。 **LR...
本文将深入探讨如何利用Java语言和MySQL数据库来实现这一功能,解析给定代码片段,并提供一种高效遍历树形结构的方法。 ### 一、理解树形结构 树形结构是一种非线性的数据结构,它由节点和边组成,其中每个节点...
在Java中,我们可以使用各种数据结构(如数组、链表、栈、队列、树和图等)来辅助实现这些算法。 1. **排序算法**:Java代码可能会包含常见的排序算法,如冒泡排序、插入排序、选择排序、快速排序、归并排序和堆...
本项目"简单的编译器 使用java语言实现"为我们提供了一个基础的编译器模型,适合初学者进行课程设计或者学习编译器原理。下面将详细解释其中涉及的知识点。 首先,我们要理解什么是编译器。编译器是计算机程序,它...
在Java中,`java.util.TreeSet`和`java.util.TreeMap`是基于红黑树实现的集合类,提供了排序和高效的查找功能。此外,`java.awt.Tree`和`javax.swing.JTree`用于图形用户界面中的树视图展示。 6. **应用场景** 树...
在给定的“java_code_of_algorithms.rar”压缩包中,包含了多个Java代码实现的数据结构和算法,重点涉及了最小生成树(Minimum Spanning Tree, MST)、深度优先搜索(Depth First Search, DFS)以及其他的排序算法。...
在“code-for-java.rar_java 预测”这个压缩包中,主要包含了一个名为“code for java.txt”的文件,这通常意味着它是一个关于使用Java语言实现的预测算法或模型的代码文档。根据描述,我们可以推测这是一个用Java...
总结来说,赫夫曼编码的Java实现主要包括构建赫夫曼树、生成编码表以及压缩和解压缩数据。通过合理利用数据结构和算法,我们可以有效地实现这一经典的数据压缩技术。在实际项目中,赫夫曼编码可以应用于文本、图像等...