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");
}
}
0
投稿
猜你喜欢
- 前言在使用Java开发接口请求中,我们需要对请求进行进行统一返回值,这时候我们自己封装一个统一的Result返回类,下面就介绍下我用的这种的
- [LeetCode] 205. Isomorphic Strings 同构字符串Given two strings s
- 什么是volatile关键字volatile是Java中用于修饰变量的关键字,其可以保证该变量的可见性以及顺序性,但是无法保证原子性。更准确
- [LeetCode] 131.Palindrome Partitioning 拆分回文串Given a string s, par
- 我们都知道单精度浮点数(Single,float,Real)由32位0或1组成,它具体是如何来的。浮点数的32位N=1符号位(Sign)+8
- 以前就遇到过这个问题,今天重新拾起来。跑马灯效果其实就是当文字超过TextView控件宽度的时候,使用滚动的方式显示出来:方法1:(直接xm
- 整理文档,java 动态增加定时任务示例,直接上代码。import org.apache.tools.ant.util.DateUtils;
- Visual Studio 2022 默认.net framework4.8,而4.6~4.7版本的.net framework可以通过方法
- 摘要:这个问题算是老生常谈了,我也是一段时间没弄过了,所以感觉有些忘了,就记录一下。一、后端通过shiro在session中存储数据://
- 格式要求:SU MO TU WE TH FR SA &nb
- 在本博客中,可以找到一篇《c#实现输出的字符靠右对齐的示例》它有教大家怎样实现字符串输出进行左齐或者是右对齐。本篇的方法,超简单,是使用st
- 本文实例讲述了java实现的简单猜数字游戏代码。分享给大家供大家参考。具体代码如下:import java.util.InputMismat
- 在导入studio工程的时候,进行sync的时候,提示Error:Configuration with name 'default&
- 本文为大家分享一个非常简单但又很常用的控件,跑马灯状态的TextView。当要显示的文本长度太长,又不想换行时用它来显示文本,一来可以完全的
- 一、demo简介1.效果展示如下图,我截了三个瞬间,但其实这是一个连续的动画,就是这个大圆不停地吞下小圆。2.这个动画可以拆分为两部分,首先
- 今天讲解一下Fragment的控制,主要是切换View和页面替换等操作。还有就是如何获取Fragment的管理对象,以及与Activity的
- 一个是新浪微博,腾讯微博的分享按钮,一个是他们的绑定情况(其实就是是否授权)。点击微博分享中新浪或腾讯按钮,就进行相应的授权(若没授权),显
- 需求:有些时候,我们需要连接多个数据库,但是,在方法调用前并不知道到底是调用哪个。即同时保持多个数据库的连接,在方法中根据传入的参数来确定。
- 光流的概念是由一个叫Gibson的哥们在1950年提出来的。它描述是空间运动物体在观察成像平面上的像素运动的瞬时速度,利用图像序列中像素在时
- 前言本文主要是将最近工作中遇到的一个问题进行总结分享,主要介绍的是如何让WebView中H5页面全屏播放视频。关于这个问题,做一下简单分析,