- 浏览: 3435544 次
- 性别:
- 来自: 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 3833question:农场的母牛寿命是5年,母牛第二年和第四年会繁 ... -
树形显示
2011-07-17 11:26 1637/** 树形结构应用十分广泛。 下面这段代码根据 ... -
求能除尽1至n的最小整数
2011-07-16 02:43 3957为什么1小时有60分钟,而不是100分钟呢?这是历史上的 ... -
java 四则运算 栈的实现
2011-07-15 13:42 13841import java.util.Stack; /* ... -
用1、2、3、3、4、5这六个数字,用java写一个程序,打印出所有不同的排列 要求:"4"不能在第三位,"3"与"5"不能相连。
2011-07-15 12:45 3370用1、2、3、3、4、5这六 ... -
【code】java红黑树
2011-06-28 10:07 3437import java.util.*; publi ... -
【code】java实现排序二叉树
2011-06-27 21:45 2854import java.util.*; publi ... -
【code】java创建哈夫曼树和实现哈夫曼编码
2011-06-27 17:31 12877创建哈夫曼树 主要思想: (1)对List集合中所有节点进 ... -
【code】java实现十种常见内部排序
2011-06-20 19:22 3074常见的内部排序: 下面介绍这十种常见内部排序(都是从 ... -
【code】java二叉树深(先中后)、广遍历
2011-06-19 16:55 1951import java.util.*; publi ... -
【code】java二叉树的实现
2011-06-17 22:50 5847二叉树的顺序存储 public class Array ... -
【code】java栈和队列实现
2011-06-16 22:11 4943顺序栈的实现 import java.util.Arrays ... -
【code】java线性表实现
2011-06-16 21:24 3657顺序线性表的实现 import java.util.A ...
相关推荐
splay tree C# code 伸展树的C#代码实现 我看到没有C#实现版本,所以就把java代码转化成C#实现了一把
赫夫曼树实现文件和字符串压缩及解压源码
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
百度云盘分享 ... Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。 部分源代码摘录: ftpClient = new FtpClient(); //实例化FtpClient对象 String serverAddr=jtfServer.getText();...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。 部分源代码摘录: ftpClient = new FtpClient(); //实例化FtpClient对象 String serverAddr=jtfServer.getText(); //得到服务器地址 ...
对树形结构的结点从1开始,自上而下,自左而右按层序编码,编码是64进制数,用java语言实现。对存取在mysql数据库的树形结构应该有帮助。 对一棵树的结点进行编码的步骤如下: 首先,对根节点编码,调用TreeCodeSet....
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
Java集合神秘地缺少树实现。 该项目试图通过提供Java集合类型的类并支持诸如分层结构之类的树来解决此问题。 要在基于Maven的项目中使用jctree,请使用以下命令: <groupId>com.googlecode.jctree</groupId> ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
工 业 界 不 少 人 预 言 :"Java 语 言 的 出 现 ,将 会 引 起 一 场软 件革 命 ",这 是 因 为 传统 的 软 件 往 往 都 是 与 具 体 的 实现 环 境 有 关 ,换 了 一 个 环 境 就需 要 作 一 番 改 动 ,耗时 费 力 ,...
collection-source-code-analyze(Java集合类源代码分析) 对集合类源代码进行分析主要对增删改查操作的源代码进行分析, 因为这四个操作才是集合中最重要的, 其它的操作示情况进行分析, 分析的流程我采用的是自己仿照...
JavaSourceCodePracticeSolveProblems:Java源代码。 阶乘,斐波那契,二叉搜索树实现和素数
7.Java多态的实现(继承、重载、覆盖) 8.编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。 9.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。 10.找出下列代码可能...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...