`
lukew
  • 浏览: 51631 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

树形结构

阅读更多
树形结构(tree)是比较常用的数据结构了,MIDP中没有它的身影,不然我就不用写这篇文章了。
代码如下:
<!---->/**
 *
 * 
@author hunhun1981
 
*/
public class HTree {
 
 
private HNode root;
 
 
private HNode current;
 
 
private int currDepth;
 
 
private int maxDepth;
 
 
public HTree(Object rootValue) {
  root 
= new HNode(null, rootValue);
  current 
= root;
 }
 
 
public void goRoot() {
  current 
= root;
  currDepth 
= 0;
 }
 
 
public boolean goChild(int index) {
  
if (current.childList != null) {
   
if (current.childList.size() > 0
     
&& index < current.childList.size()) {
    current 
= (HNode) current.childList.elementAt(index);
    currDepth
++;
    
if (currDepth > maxDepth) {
     maxDepth 
= currDepth;
    }
    
return true;
   }
  }
  
return false;
 }
 
 
public void goBack() {
  
if (current.father != null) {
   current 
= current.father;
   currDepth–;
  }
 }
 
 
public Object getCurrent() {
  
return current.value;
 }
 
 
public int getCurrentDepth() {
  
return currDepth;
 }
 
 
public int getMaxDepth() {
  
return maxDepth;
 }
 
 
public Object[] getChilds() {
  
if (current.childList != null) {
   
if (current.childList.size() > 0) {
    Object[] ret 
= new Object[current.childList.size()];
    
for (int i = 0; i < ret.length; i++) {
     ret[i] 
= ((HNode) current.childList.elementAt(i)).value;
    }
    
return ret;
   }
  }
  
return null;
 }
 
 
public Object getChild(int index) {
  
if (current.childList != null) {
   
if (current.childList.size() > 0
     
&& index < current.childList.size()) {
    
return ((HNode) current.childList.elementAt(index)).value;
   }
  }
  
return null;
 }
 
 
public void addChild(Object obj) {
  
if (current.childList == null) {
   current.childList 
= new Vector();
  }
  current.childList.addElement(
new HNode(current, obj));
 }
 
 
public void addChilds(Object[] objs) {
  
if (current.childList == null) {
   current.childList 
= new Vector();
  }
  
for (int i = 0; i < objs.length; i++) {
   current.childList.addElement(
new HNode(current, objs[i]));
  }
 }
 
 
public int hasChild() {
  
if (current.childList == null || current.childList.size() <= 0) {
   
return 0;
  } 
else {
   
return current.childList.size();
  }
 }
 
 
private class HNode {
 
  
public Vector childList;
 
  
public HNode father;
 
  
public Object value;
 
  
public HNode(HNode father, Object value) {
   
this.value = value;
   
this.father = father;
   
this.childList = null;
  }
 }
}


这个类实现简单,没有包含复杂的功能,仅仅用来做树形数据的存储还是不错的。比如游戏中用来管理场景,管理资源;应用中用来作分类数据的表现等等。完全足以胜任。
使用方法如下:
<!---->HTree tree = new HTree(”root”);//会自动创建一个默认的根节点
tree.addChild(”天才”);//在根节点添加新的节点
tree.addChild(”白痴”);
tree.goChild(
0);//进入到当前节点的第一个节点(天才)。
tree.addChild(”天才1号”);//在当前节点(天才)添加新的节点
tree.addChild(”天才2号”);
tree.goBack();
//返回当前节点(天才)的父节点(根)
tree.goChild(1);//进入到当前节点的第二个节点(白痴)。
tree.addChild(”白痴1号”);//在当前节点(白痴)添加新的节点
tree.addChild(”白痴2号”);
tree.goRoot();
//完成创建后将当前节点设置为根节点。

上面的代码创建了一棵完整的树,当然,您可以使用任何对象代替这里存储的String对象。
还有一些方法,一看函数名大概都能明白,就不再唠叨了。
遍历的方法于上面创建树的方法相似,总之,要注意当前节点的位置,以免下次使用时处在错误的位置。
有兴趣的朋友可以扩展一下遍历方法。不过我觉得没必要。因为J2ME环境下更需要的是树形结构,而不是强大的tree对象。

总之,我比较倾向于简单实现,希望它不太让人觉得简陋就好。从实用出发,它还是能够满足大部分受限平台的需求的。
分享到:
评论

相关推荐

    mysql 树形结构查询

    mysql 树形结构查询 MySQL 树形结构查询是指使用存储过程来实现 MySQL 数据库中的树形结构查询。这种查询方式可以高效地查询树形结构的数据,并且可以根据需要设置递归深度。 MySQL 中的树形结构查询可以使用存储...

    LABVIEW树形结构实例

    **LABVIEW树形结构实例详解** LabVIEW,全称Laboratory Virtual Instrument Engineering Workbench,是一款由美国国家仪器(NI)公司开发的图形化编程环境,主要用于数据采集、测量控制和科学计算。在LabVIEW中,树...

    可编辑的树形结构

    在IT领域,树形结构是一种常见的数据表示方式,它模仿了自然界中的树,其中每个节点可以有零个或多个子节点。在这个特定的场景中,我们讨论的是“可编辑的动态树形结构”,这意味着用户不仅可以查看这个树状图,还...

    jsp树形结构的生成

    jsp树形结构的生成 jsp树形结构的生成是指使用jsp技术生成一个导航树,实现树形结构的展示。jsp树形结构的生成可以应用于各种Web应用程序中,例如文件管理系统、组织结构管理系统等。 jsp树形结构的生成可以使用...

    菜单树形结构,支持三级、多级树形结构代码

    在IT领域,尤其是在前端开发中,菜单树形结构是一种常见的数据展示方式,它能够清晰地组织和层次化复杂的导航信息。本项目提供的是一段手写的代码,用于构建支持三级乃至多级的树形结构,适应于不同的应用需求,并且...

    树形结构设计总结java demo

    在IT领域,特别是软件开发中,树形结构是一种常见的数据结构,它被广泛应用于各种场景,如文件系统、计算机科学中的编译器、图形用户界面的菜单系统等。本篇文章将深入探讨“树形结构设计”在Java环境下的实现,并...

    java-根据过滤条件显示树形结构

    在Java编程中,构建和显示树形结构是一种常见的任务,特别是在数据表示、文件系统操作或者组织复杂的对象层次结构时。本篇文章将详细讲解如何在Java中根据过滤条件来实现这一功能,同时也会提及所需的jar包。 首先...

    基于JAVA建立树形结构的算法优化.pdf

    树形结构是一种在计算机科学和数据管理中广泛应用的非线性数据结构,它模拟了现实世界中实体之间的层级关系,例如公司的组织结构、计算机文件系统的目录结构等。树形结构在程序设计中极为重要,尤其是在需要展示层级...

    Android树形结构RecyclerView

    在本项目中,我们关注的是一个特别的应用场景——"Android树形结构RecyclerView",这是一个专门设计用于展示无限层级数据的RecyclerView实现。这种组件在企业级应用中尤其常见,如组织架构、文件目录、分类导航等,...

    好看的树形结构菜单

    在IT界,尤其是在前端开发中,"好看的树形结构菜单"是一种常见的用户界面元素,用于组织和展示层次化的数据或功能。树形结构菜单通常由节点(nodes)组成,每个节点可以包含子节点,形成一个可展开和折叠的层级结构...

    JS 做的树形结构比较简单明了

    在JavaScript(JS)中,构建树形结构是一种常见的任务,特别是在网页交互和数据展示中。树形结构是一种数据组织方式,模拟自然界中的树状结构,其中每个元素(节点)可以有零个或多个子节点。这种结构使得数据的层次...

    vue实现的树形结构加多选框示例

    本文主要探讨了使用Vue框架实现带有复选框的树形结构组件,重点在于在已有的递归组件基础上添加多选框功能,并实现一些基本的交互逻辑。要实现这样的功能,需要考虑以下几个关键技术点: 1. **递归组件的使用**:...

    树形结构插件

    树形结构插件是一种在软件应用中用于组织和展示数据的工具,特别是在文档管理和信息架构领域广泛应用。这种插件能够将复杂的数据以层次化的、易于理解的树状形式展现出来,用户可以直观地看到各个元素之间的关系,...

    Android 树形结构的多选CheckBox

    在Android开发中,实现树形结构的多选CheckBox是一项常见的需求,主要用于展现层次关系的数据,并允许用户进行多项选择。这个“Android 树形结构的多选CheckBox”项目提供了一个易于集成和使用的解决方案。 首先,...

    树形结构(增删改查刷新等功能附SQL脚本)

    在IT领域,树形结构是一种常见的数据组织方式,它模拟了自然界中的树状层次关系,广泛应用于文件系统、数据库索引、计算机科学的算法设计等多个方面。在这个项目中,我们探讨的是如何在Java环境中,利用JSP(Java...

    使用jsTree实现js树形结构

    **jsTree:构建前端树形结构的利器** jsTree 是一个强大的 JavaScript 库,专用于在 Web 页面上创建交互式的树形结构。它基于纯 JavaScript 编写,无需依赖其他库,因此对于初学者和有经验的开发者来说,都是一个...

    树形结构记事本treepad

    **树形结构记事本Treepad** Treepad是一款基于树形结构的文本编辑器,它为用户提供了组织、存储和管理信息的高效方式。在这款记事本软件中,信息以节点的形式呈现,每个节点可以包含文本内容,也可以进一步扩展为子...

    Vue组件模板形式实现对象数组数据循环为树形结构(实例代码)

    数据结构为数组中包含对象–树形结构,用Vue组件的写法实现以下的效果: 树形列表,缩进显示层级,第5级数据加底色,数据样式显色,点击展开折叠数据。本文为用Vue实现方式,另有一篇为用knockout.js的实现方法。 ...

    在PB中实现datawindow树形结构(实现关键技术 )

    在PowerBuilder中实现DataWindow树形结构的关键技术与实践 一、树形结构的重要性与应用场景 树形结构在软件开发中扮演着至关重要的角色,尤其是在处理具有层级关系的数据时。这种结构不仅能够清晰地展现数据之间的...

    树形结构地址联动选择

    树形结构地址联动选择是一种常见的前端交互设计,广泛应用于网页中的地区选择,如省市区县等多级选择。这种设计通常以树状的形式展现,用户逐级选择,上级选择会影响下级可选项,实现联动效果。在此过程中,前端...

Global site tag (gtag.js) - Google Analytics