Java实现简单树结构
作者:Java开发-搁浅 发布时间:2023-08-06 18:59:12
标签: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");
}
}


猜你喜欢
- 在C程序代码中我们可以利用操作系统提供的互斥锁来实现同步块的互斥访问及线程的阻塞及唤醒等工作。然而在Java中除了提供LockAPI外还在语
- 逻辑描述:现在我们想在B层和D层加上接口层,并使用工厂。而我们可以将创建B和创建D看作是两个系列,然后就可以使用抽象工厂进行创建了。配置文件
- 文章主要涉及到以下几个问题:怎么实现Java的序列化为什么实现了java.io.Serializable接口才能被序列化transient的
- 一、建立一个maven工程 pom类型统一管理依赖以及版本号子工程不会使用所有的定义的依赖子工程使用依赖时无需指定版本号其pom.xml&l
- 本文实例为大家分享了ImageSwitcher图像切换器的实现代码,供大家参考,具体内容如下描述在该实例中,提供一个图片切换器和两个点击按钮
- ApplicationContextAware 通过它Spring容器会自动把上下文环境对象调用ApplicationContex
- 我就废话不多说了,大家还是直接看代码吧~import com.alibaba.fastjson.JSON;import java.util.
- 前言我们在日常开发中,经常会用到一个系统需要链接多个数据库来实现业务的需求,比如多个系统之间数据调用、两个数据之间同步等等。今天给大家分享使
- 本文实例讲述了Android基于TextView实现的跑马灯效果。分享给大家供大家参考,具体如下:package sweet.venst.a
- <foreach>标签动态增删改查mybatis<foreach>有的时候在项目中需要查询某个列表时,可能会在代码中
- 背景何为延迟队列?顾名思义,延迟队列就是进入该队列的消息会被延迟消费的队列。而一般的队列,消息一旦入队了之后就会被消费者马上消费。场景一:在
- 解决方法:maven的配置文件<mirror> <id>aliyunmaven</id> <mir
- 1、新建一个Activity,并把各个生命周期打印出来 2、运行Activity,得到如下信息 onCreate--> onStart
- <%@ page language="java" contentType="text/html; cha
- 一、稀疏数组1、什么是稀疏数组当一个数组中大部分元素为0,或者为同一个值的数组时,可以用稀疏数组来保存该数组。稀疏数组,记录一共有几行几列,
- 最近用了Stream流,感觉超好用,记录一下。1、快速创建List比如我有个实体类User,User有个属性Namepublic class
- 一、多线程的优缺点多线程的优点:1)资源利用率更好2)程序设计在某些情况下更简单3)程序响应更快多线程的代价:1)设计更复杂虽然有一些多线程
- Android WebView常见问题解决方案汇总:就目前而言,如何应对版本的频繁更新呢,又如何灵活多变地展示我们的界面呢,这又涉及到了we
- 摘要:本文介绍Linq查询基本操作(查询关键字)- from 子句- where 子句- select子句- group 子句- into
- using System;using System.Collections.Generic;using System.Text;namesp