这篇文章主要为大家详细介绍了 Java 实现简单树结构的相关资料, 具有一定的参考价值, 感兴趣的小伙伴们可以参考一下
简单的实现了一个树的结构, 很不完善! 后续参考一些其他代码的实现
试图实现叶子存在可变的节点, 能够用来解析 xml 文件
叶子的代码:
- package com.app;
- import java.util.ArrayList;
- import java.util.List;
- public class treeNode<T> {
- public T t;
- private treeNode<T> parent;
- public List<treeNode<T>> nodelist;
- public treeNode(T stype){
- t = stype;
- parent = null;
- nodelist = new ArrayList<treeNode<T>>();
- }
- public treeNode<T> getParent() {
- return parent;
- }
- }
树的代码:
- package com.app;
- public class tree<T> {
- public treeNode<T> root;
- public tree(){}
- public void addNode(treeNode<T> node, T newNode){
- // 增加根节点
- if(null == node){
- if(null == root){
- root = new treeNode(newNode);
- }
- }else{
- treeNode<T> temp = new treeNode(newNode);
- node.nodelist.add(temp);
- }
- }
- /* 查找 newNode 这个节点 */
- public treeNode<T> search(treeNode<T> input, T newNode){
- treeNode<T> temp = null;
- if(input.t.equals(newNode)){
- return input;
- }
- for(int i = 0; i < input.nodelist.size(); i++){
- temp = search(input.nodelist.get(i), newNode);
- if(null != temp){
- break;
- }
- }
- return temp;
- }
- public treeNode<T> getNode(T newNode){
- return search(root, newNode);
- }
- public void showNode(treeNode<T> node){
- if(null != node){
- // 循环遍历 node 的节点
- System.out.println(node.t.toString());
- for(int i = 0; i < node.nodelist.size(); i++){
- showNode(node.nodelist.get(i));
- }
- }
- }
- }
测试的主函数:
- package com.app;
- public class app {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- /* 简单实现一个树的结构, 后续完善解析 xml */
- /* 写得满烂的, 后续查阅一些其他代码 2012-3-12 */
- // 测试
- /*
- * string
- * hello
- * sinny
- * fredric
- * world
- * Hi
- * York
- * */
- tree<String> tree = new tree();
- tree.addNode(null, "string");
- tree.addNode(tree.getNode("string"), "hello");
- tree.addNode(tree.getNode("string"), "world");
- tree.addNode(tree.getNode("hello"), "sinny");
- tree.addNode(tree.getNode("hello"), "fredric");
- tree.addNode(tree.getNode("world"), "Hi");
- tree.addNode(tree.getNode("world"), "York");
- tree.showNode(tree.root);
- System.out.println("end of the test");
- }
- }
来源: http://www.phperz.com/article/18/0228/358827.html