`
啸笑天
  • 浏览: 3462193 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

树形显示

阅读更多

/** 
树形结构应用十分广泛。
下面这段代码根据用户添加的数据,在内存中构建一个逻辑上等价的树形结构。
通过ShowTree() 可以把它显示为控制中的样子。
其中:
  a.add('a', 'b');
  a.add('b', 'e');
表示:'b' 作为 'a' 的孩子节点;'e' 作为 'b'的孩子节点。
如代码中给出的示例数据,输出结果应该为:
a--b--e
|  |--f--j
|     |--k
|--c
|--d--g--h
   |--i
   
 */

import java.util.*;
class MyTree
{
	private Map map = new HashMap();
	
	public void add(char parent, char child)
	{
		List<Character> t = (List<Character>)map.get(parent);
		if(t==null)
		{
			t = new Vector<Character>();
			map.put(parent, t);  //
		}
		t.add(child);
	}
	
	public List<Character> getChild(char x)
	{
		return (List<Character>)map.get(x);
	}
}

public class My
{
	public static List<String> showTree(MyTree tree, char x)
	{
		List<Character> t = tree.getChild(x);//x的孩子节点的集合t
		
		List<String> r = new Vector<String>();
		
		if(t==null)
		{
			r.add("" + x);
			return r;
		}
				
		for(int i=0; i<t.size(); i++)
		{
			List<String> ri = showTree(tree, t.get(i));//递归t中每个元素的求他们的孩子节点
			for(int j=0; j<ri.size(); j++)
			{
				String pre = "|  ";
				if(j==0)
				{
					if(i==0)
						pre = x + "--";
					else 
						pre = "|--";
				}
				else
				{
					if(i==ri.size())    // 
						pre = "   ";
					else
						pre = "|  ";
				}
				
				r.add(pre + ri.get(j));
			}
		}
		
		return r;
	}
	
	public static void main(String[] args)
	{
		MyTree a = new MyTree();
		a.add('a', 'b');
		a.add('b', 'e');
		a.add('b', 'f');
		a.add('a', 'c');
		a.add('a', 'd');
		a.add('d', 'g');
		a.add('d', 'i');
		a.add('g', 'h');
		a.add('f', 'j');
		a.add('f', 'k');
		
		List<String> lst = showTree(a, 'a');
		for(int i=0; i<lst.size(); i++)
		{
			System.out.println(lst.get(i));
		}
	}
}
 
分享到:
评论

相关推荐

    c# 带树形显示的下拉框

    在这种情况下,“带树形显示的下拉框”是一种很好的解决方案,它将传统的下拉框与树形视图的功能相结合,允许用户以更直观的方式浏览和选择数据。下面我们将深入探讨这个主题。 1. **控件设计** - **自定义控件**...

    xml文件树形显示,可添加删除修改xml节点

    在IT领域,"xml文件树形显示"涉及到的技术主要包括XML解析器和数据可视化。XML解析器负责读取XML文件并将其转化为内存中的数据结构,如DOM(Document Object Model)树。DOM树将XML文档的每个部分映射为一个节点,...

    多叉树的树形显示

    本文将深入探讨多叉树的定义、特性、应用以及如何实现其树形显示。 首先,理解多叉树的基本概念。一棵多叉树由一个根节点开始,可以有零个或多个子节点,而每个子节点又可以是一个新的多叉树。节点之间的关系构成了...

    C#中XML文件的树形显示

    本文将深入探讨如何在C#中实现XML文件的树形显示,以及如何进行节点的插入和删除操作。 首先,我们需要了解如何在C#中加载XML文件。这通常通过使用`System.Xml`命名空间中的`XmlDocument`类来完成。以下是一个简单...

    C#制作文件系统树形显示

    在C#编程中,制作文件系统树形显示是一项常见的任务,尤其在开发桌面应用程序时,如资源管理器或自定义文件浏览器。这个项目的核心是利用Windows Forms中的TreeView控件来模拟文件系统的层次结构,使用户能够以直观...

    在下拉框里面绑定树形显示

    在下拉框里面绑定树形显示 1、递归绑定 2、树形显示下拉框列表

    树形显示的checkbox的三态

    综上所述,"树形显示的checkbox的三态"是一个结合了数据结构、前端交互和用户体验设计的复杂功能。通过JavaScript和HTML,我们可以创建一个允许用户以直观和高效的方式操作具有层次关系数据的界面,同时提供三态复选...

    EAS系统F7控件树形显示

    "EAS系统F7控件树形显示"这个主题涉及的是在EAS系统中,如何使用F7控件来实现数据的树形结构展示。F7控件是一种用户界面组件,它允许用户以层次结构的形式查看和操作数据,这样的布局常见于文件管理器、组织结构图或...

    struts 树形显示

    Struts 提供了支持来实现这种树形显示的功能。 在 Struts 中实现树形显示,主要涉及到以下几个关键知识点: 1. **JSP(JavaServer Pages)**:作为视图层,JSP 负责渲染页面,将后台数据以树形结构展示给用户。...

    模拟系统文件系统功能..树形显示目录

    为了实现“树形显示目录”的功能,我们需要做以下几步: 1. **创建MFC应用程序**:启动Visual Studio 2010,选择新建项目,然后选择MFC应用程序模板。 2. **添加树控件**:在主窗口的设计视图中,添加一个...

    vc中树形显示

    在VC++编程环境中,"vc中树形显示"主要指的是使用MFC(Microsoft Foundation Classes)库中的CTreeCtrl类来创建和管理树型控件。树型控件是一种常见的用户界面元素,它允许用户以层级结构展示数据,常用于文件系统、...

    thTree树形显示控件(倒数显示)

    总的来说,`thTree`作为一个轻量级且功能强大的树形显示控件,为Web开发者提供了方便的工具来构建层次结构的界面元素,提升了用户体验。通过深入学习和实践,你可以灵活运用它来满足各种项目需求。

    VC 窗口分割 树形显示内容

    在VC++ 6.0开发环境中,"VC 窗口分割 树形显示内容"是一个典型的Windows应用程序设计,它涉及到窗口管理、控件使用以及数据结构的展示等多个编程概念。下面将详细解释这些知识点: 1. **窗口分割**: 在Windows...

    Json格式化树形显示.zip

    为了解决这个问题,出现了各种JSON格式化工具,其中"Json格式化树形显示"就是一个很好的示例。 "Json格式化树形显示"是一款基于Java开发的应用程序,它利用了Fastjson这个高性能的JSON库来解析和格式化JSON数据。...

    树形控件显示通讯录

    本主题将深入探讨如何利用MFC中的树形控件来实现一个通讯录功能,这对于MFC初学者来说是一个很好的实践项目。 树形控件在MFC中通常被称为CTreeCtrl,它是一种图形用户界面元素,可以以层次结构展示数据,非常适合...

    thTree树形显示控件V1,4(倒数显示)

    在本文中,我们将深入探讨`thTree`树形显示控件,这是一个基于JavaScript和jQuery的网页组件,用于创建和管理树形结构的数据展示。`thTree`控件V1.4,特别是1.4.1-r2版本,引入了显示和隐藏子节点的功能,为网页开发...

    无限级读取子类树形显示.zip

    总的来说,"无限级读取子类树形显示"涉及到数据库设计、SQL查询、C#编程、前端展示和异步加载等多个环节,理解并掌握这些技术对于开发具有层级关系的系统至关重要。在实践中,需要综合考虑性能、用户体验和代码可...

    C# 获取磁盘目录结构以树形方式显示

    C# 获取磁盘目录结构以树...C#获取你电脑磁盘的目录结构,并以树形菜单的方式显示出来,如果有子目录,会逐级递归下去,直到显示完成,程序的树形控件也比较不错,这也是大家常用的菜单显示方法,有必要学会使用树控。

    用JAVA显示树形目录

    用JAVa实现 树形目录的显示,有界面

    C#如何以树形结构来层级显示

    本文将深入探讨如何在C#中构建和操作树形结构,以实现层次化的显示。 首先,树形结构是由节点(Node)组成的,每个节点可以有零个或多个子节点,这种关系形成了一个层级。在C#中,我们可以使用System.Windows.Forms...

Global site tag (gtag.js) - Google Analytics