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");
   }

 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)

    复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.Linq; using System.Xml; using System.Xml.Linq; namespace WebApplication3 { public

  • asp下生成目录树结构的类

    关于生成目录树结构的类 本程序有两文件test.asp 和tree.asp 还有一些图标文件 1.test.asp 调用类生成树 代码如下 <%@ Language=VBScript %> <html> <head> <link rel="stylesheet" href="tree.css"> <title>tree</title> </head> <!-- #include

  • 详解JavaScript树结构

    对于数据结构"树",想必大家都熟悉,今儿,我们就再来回顾一下数据结构中的二叉树与树,并用JavaScript实现它们. ps:树结构在前端中,很多地方体现得淋漓尽致,如Vue的虚拟DOM以及冒泡等等. 二叉树 --概念-- 二叉树是一种树形结构,它的特点是每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒. 如下,就是一棵二叉树(注:下文二叉树相关例子,都以该二叉树为例): 且,遍历二叉树(traversing binary t

  • Python实现二叉树结构与进行二叉树遍历的方法详解

    二叉树的建立 使用类的形式定义二叉树,可读性更好 class BinaryTree: def __init__(self, root): self.key = root self.left_child = None self.right_child = None def insert_left(self, new_node): if self.left_child == None: self.left_child = BinaryTree(new_node) else: t = BinaryTr

  • java根据数据库表内容生产树结构json数据的方法

    1.利用场景 组织机构树,通常会有组织机构表,其中有code(代码),pcode(上级代码),name(组织名称)等字段 2.构造数据(以下数据并不是组织机构数据,而纯属本人胡编乱造的数据) List<Tree<Test>> trees = new ArrayList<Tree<Test>>(); tests.add(new Test("0", "", "关于本人")); tests.add(new

  • JAVA 根据数据库表内容生产树结构JSON数据的实例代码

    1.利用场景 组织机构树,通常会有组织机构表,其中有code(代码),pcode(上级代码),name(组织名称)等字段 2.构造数据(以下数据并不是组织机构数据,而纯属本人胡编乱造的数据) List<Tree<Test>> trees = new ArrayList<Tree<Test>>(); tests.add(new Test("0", "", "关于本人")); tests.add(new

  • Python打印scrapy蜘蛛抓取树结构的方法

    本文实例讲述了Python打印scrapy蜘蛛抓取树结构的方法.分享给大家供大家参考.具体如下: 通过下面这段代码可以一目了然的知道scrapy的抓取页面结构,调用也非常简单 #!/usr/bin/env python import fileinput, re from collections import defaultdict def print_urls(allurls, referer, indent=0): urls = allurls[referer] for url in urls

  • mybatis实现读取树结构数据实例代码

    mybatis实现读取树结构数据详细介绍如下所示: 表结构 CREATE TABLE `lscrm_function_privilege` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '编号', `create_id` varchar(30) NOT NULL DEFAULT 'sys', `update_id` varchar(30) NOT NULL DEFAULT 'sys', `create_time` timestam

  • C++二叉树结构的建立与基本操作

    准备数据定义二叉树结构操作中需要用到的变量及数据等. 复制代码 代码如下: #define MAXLEN 20    //最大长度typedef char DATA;    //定义元素类型struct  CBTType                   //定义二叉树结点类型 { DATA data;           //元素数据  CBTType * left;    //左子树结点指针  CBTType * right;   //右子树结点指针 }; 定义二叉树结构数据元素的类型DA

  • JavaScript几种形式的树结构菜单

    1.悬浮层树(Tree) 这种树结构实现类似面包屑导航功能,监听的是节点鼠标移动的事件,然后在节点下方或右方显示子节点,依此递归显示子节点的子节点. 用户首页博客设置文章相册留言评论系统 这里要注意几个小问题,其一这种树结构是悬浮层绝对定位的,在创建层的时候一定要直接放在body的下面,这样做的是确保在IE里面能遮掩住任何层,因为在IE里面是有stacking context这种东西的潜规则在里面的,另外当然还有一个select你能遮住我吗?老掉牙的问题,这里是采用在每个悬浮层后面加个ifram

随机推荐