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

递归构建tree

    博客分类:
  • Java
 
阅读更多
class ClientTreeReader {

	private StringBuffer sbTree = new StringBuffer();
	
	public String read() {
		Connection conn = null;
		try {
			conn = DBUtil.getConnection();
			read(conn, 0, 0);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DBUtil.closeAll(null, null, conn);
		}
		return sbTree.toString();
	}
	
	private void read(Connection conn, int id, int level)
		throws SQLException {
		String sql = "select * from t_client where pid=?";
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try {
			pstmt = conn.prepareStatement(sql);
			pstmt.setInt(1, id);
			rs = pstmt.executeQuery();
			while (rs.next()) {
				
				//加入div标签
				sbTree.append("<div>");
				sbTree.append("\n");
				//加缩进
				for (int i = 0; i < level; i++) {
					sbTree.append("<img src=\"../images/white.gif\">");
					sbTree.append("\n");
				}
				
				//如果不是叶子节点,递归查询子节点
				if (Constant.NO.equals(rs.getString("is_leaf"))) {
					//加入加号图片
					sbTree.append("<img alt=\"展开\" style=\"cursor:hand;\" onClick=\"display('" + rs.getInt("id")
							+ "');\" id=\"img" + rs.getInt("id") + "\" src=\"../images/plus.gif\">");
					sbTree.append("\n");
					//加入关闭的文件夹图片
					sbTree.append("<img id=\"im" + rs.getInt("id") + "\" src=\"../images/closedfold.gif\">");
					sbTree.append("\n");
					//加入a标签
					sbTree.append("<a href=\"client_node_crud.jsp?id=" + rs.getInt("id") + "\" target=\"clientDispAreaFrame\">");
					//拼接字符串内容
					sbTree.append(rs.getString("name")).append("<br>");
					//a结束标签
					sbTree.append("</a>");
					sbTree.append("\n");
					//加入隐藏的div标签
					sbTree.append("<div id=div" + rs.getInt("id") + " style='display: none;'>");
					sbTree.append("\n");
					read(conn, rs.getInt("id"), level + 1);
				} else {
					//加入减号图片和打开的文件夹图片
					sbTree.append("<img src=\"../images/minus.gif\">")
						.append("<img src=\"../images/openfold.gif\">");
					sbTree.append("\n");
					//加入a标签
					if (Constant.NO.equals(rs.getString("is_client"))) {
						//如果不是分销商,链接地址为client_node_crud.html
						sbTree.append("<a href=\"client_node_crud.jsp?id=" + rs.getInt("id") + "\" target=\"clientDispAreaFrame\">");
					} else {
						//如果不是分销商,链接地址为client_crud.html
						sbTree.append("<a href=\"client_crud.jsp?id=" + rs.getInt("id") + "\" target=\"clientDispAreaFrame\">");
					}
					//拼接字符串内容
					sbTree.append(rs.getString("name")).append("<br>");
					//a结束标签
					sbTree.append("</a>");
					sbTree.append("\n");
					//加入隐藏div标签
					sbTree.append("<div id=div" + rs.getInt("id") + " style='display: none;'>");
					sbTree.append("\n");
				}
				
				//div结束标签
				sbTree.append("</div></div>\n");
				
			}
		} finally {
			DBUtil.closeAll(rs, pstmt, null);
		}
	}
	
	public static void main(String[] args) {
		ClientTreeReader ctr = new ClientTreeReader();
		System.out.println(ctr.read());
	}
}

 

分享到:
评论

相关推荐

    PHP递归生成TREE

    在PHP编程中,"递归生成TREE"是一个常见的任务,特别是在构建目录结构、组织数据或者创建多级菜单时。这个话题对于初学者来说是至关重要的,因为它涉及到理解递归算法和如何将数据转换为层次结构。下面我们将深入...

    两种mysql递归tree查询效率-mysql递归tree

    ### 两种MySQL递归Tree查询效率分析 #### 一、背景与目的 在数据库操作中,经常需要处理具有层级结构的数据。例如,在处理组织结构、文件系统或是地区划分时,通常会采用递归的方式来查询这些层级关系。MySQL作为...

    java递归实现树(Tree)

    一个简单的小例子递归实现list按照index排序的树

    Tree使用递归显示

    在这个场景下,“Tree使用递归显示”是一个常见的需求,它涉及到数据结构、数据库操作以及前端展示等多个方面的知识。 首先,我们需要理解“树”(Tree)这一数据结构。树是一种非线性数据结构,它由多个节点组成,...

    用Java集合递归实现通用树Tree

    本资源主要关注如何使用Java集合框架来递归实现一个通用的树结构,即`Tree`。下面我们将深入探讨这个主题。 首先,我们要了解Java集合框架。Java集合框架是Java语言提供的一组接口和类,用于存储和操作各种数据结构...

    jsp jstl 递归 输出树 Tree 后台 Java 集合 递归 实现通用 树Tree

    本主题将深入探讨如何使用Java集合、JSP和JSTL来递归地创建并输出树形结构(Tree),特别是用于前端展示。 首先,我们要理解Java集合在构建树结构中的作用。在Java中,可以使用ArrayList、LinkedList或者自定义的...

    tree easyui java 树递归

    "tree easyui java 树递归"这个主题涉及到的就是如何在Java环境下利用EasyUI库创建一个树形结构,并通过SpringMVC框架与数据库进行交互。下面将详细阐述相关知识点。 首先,EasyUI是一个基于jQuery的UI组件库,提供...

    tree递归.rar

    "Tree递归.rar"这个压缩包文件提供了一个关于如何使用递归算法处理树结构的示例。递归是编程中的一种强大工具,它允许函数或方法调用自身来解决复杂问题。在这个例子中,递归被用来遍历和操作树结构。 首先,我们来...

    用递归实现C#树形结构

    本篇将详细探讨如何使用递归方法来实现C#中的树形结构。 首先,理解树形结构的基本概念至关重要。在计算机科学中,树是由节点(也称为顶点)和边组成的非线性数据结构。每个节点可以有零个或多个子节点,而顶部的...

    dhtmlx tree 使用,与oracle递归查询的结合

    分析这个文件的内容可以帮助我们了解如何构建适合dhtmlx Tree的递归查询。 **s3h3文件** 这个文件名不太常见,可能是一个特定的文件格式或者编码方式,但无法确定具体含义,因为没有提供更多的上下文信息。如果它...

    extjs ajax tree(js动态树,无需递归)

    ExtJS AJAX Tree是一种...总的来说,ExtJS AJAX Tree是构建动态、交互式树形界面的强大工具,通过AJAX实现异步加载,可以有效优化大型数据集的展示性能。通过深入理解和实践,你可以创建出满足各种需求的复杂树形视图。

    递归实现的 ADF Dynamic tree

    总之,递归实现的ADF动态树是一种高效的方法,用于构建和更新自适应的数据结构。它利用了递归的内在力量,将复杂的问题简化为一系列小问题,同时保持了灵活性以应对数据变化。理解递归并能熟练运用,是成为优秀...

    自制无限级tree(采用递归算法)

    通过学习和理解这个实现,我们可以将递归算法应用于各种类似问题,如构建组织结构、构建文件系统模型或实现复杂的数据导航系统。 总的来说,递归算法是构建无限级树的强大工具,它简化了数据结构的管理和操作。熟练...

    构建sp-tree

    - **spt.m**:可能是一个用于构建SP-Tree的主要函数,它可能实现上述的初始化、分割和递归过程。 - **deletgrid.m**:可能用于处理删除操作,通过SP-Tree找到待删除对象所在的子区域,并更新相应的树结构。 - **...

    js tree构建菜单树

    JavaScript Tree 是一种在Web应用程序中实现可交互树形结构的技术,它主要依赖于JavaScript和HTML来构建。在本文中,我们将深入探讨如何使用JavaScript(尤其是jQuery库)来创建动态的菜单树,以及与之相关的web开发...

    tree(层次构建与非递归遍历).rar

    本教程主要探讨了如何利用队列进行树的层次构建以及如何通过非递归方式实现前序遍历,这两种方法都是处理树结构时的关键技巧。 首先,我们来理解"层次构建"的概念。层次构建,也称为层次遍历或广度优先搜索(BFS)...

    c#递归树自动树

    根据给定的信息,本文将详细解释C#中的递归树构建方法,并重点解析如何通过递归函数实现自动化的树形结构构建,包括添加父子节点等操作。 ### 一、递归树的概念 在计算机科学中,树是一种常用的数据结构,它由节点...

    用 Vue.js 递归组件实现可折叠的树形菜单(demo)

    接下来,我们将构建一个递归组件TreeMenu.vue。在TreeMenu组件中,我们会通过模板展示当前节点的label,并使用v-for指令来递归地渲染子节点。如果当前节点有子节点,就循环渲染子节点数组中的每一个节点,并传递相应...

    C# 递归建树 CreateTree 实例

    利用这些字段,我们可以创建一个递归方法来构建树形结构。下面是一个基本的`CreateTree`方法示例: ```csharp public TreeNode CreateTree(List&lt;Node&gt; nodes, int parentId) { var parentNode = new TreeNode(); ...

    树父节点递归获取树子节点

    在Java中,通过递归方法我们可以轻松地实现从父节点获取所有子节点的功能,这对于构建树形结构的应用程序(如文件系统、组织结构或菜单系统)非常有用。理解并掌握递归是每个程序员必备的技能之一。

Global site tag (gtag.js) - Google Analytics