`
张玉龙
  • 浏览: 743891 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

用递归实现的Tree

阅读更多

package com.qiyi.service;

import java.util.ArrayList;
import java.util.List;

import com.qiyi.dao.DAO;
import com.qiyi.po.Tree;

public class Service {
	private DAO dao;
	

	public DAO getDao() {
		return dao;
	}

	public void setDao(DAO dao) {
		this.dao = dao;
	}

	public List<Tree> findAllService() {
		List<Tree> list = dao.findAll();
		return list;
	}

	public void saveService(Tree transientInstance) {
		dao.save(transientInstance);
	}

	public void findById(int id) {
		dao.findById(id);
	}
	
	
	
	private List<Tree> l = new ArrayList<Tree>();
	
	public List<Tree> showTree() {
		l.clear();
		List<Tree> list = (List<Tree>) dao.findByPid(0);
		for (Tree t : list) {
			if (t.getIsleaf() != 0) {
				l.add(t);
				list = this.tree(t.getId(), 1);
			}
			
		}
		return l;
		
	}
	private List<Tree> tree(int id, int level) {
		List<Tree> list = (List<Tree>) dao.findByPid(id);
		for (Tree t : list) {
			if  (t.getIsleaf() == 0){
				l.add(t);
				t.setLeveler(level+1);
				tree(t.getId(), t.getLeveler());
				
				}
			if (t.getIsleaf() != 0) {
				//非叶子节点
				l.add(t);
				t.setLeveler(level+1);
				tree(t.getId(), t.getLeveler());
			}
		}
		return l;
	}
	
}





jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	import="java.util.*,com.qiyi.po.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	</head>
	<body>
		<tr>
			<a href="./index.jsp">首页</a>
			
			<a href="./saveRootAction.action">增加新的根节点</a>
		</tr>
		<table align="left" border="2" bordercolor="ffffff">
			

				<%
					List<Tree> list = (List<Tree>) request.getAttribute("list");
					for (Tree t : list) {
				%><tr>
				<td><%=t.getId()%></td><td>
					<%
						for (int i = 0; i < t.getLeveler(); i++) {
					%>
					<%="&nbsp;&nbsp;"%>
					<%
						}
					%>
					<%=t%>
					</td><td>
					<%
						if (t.getIsleaf() != 0) {
					%>
					</td><td></td><td><a href="./saveNodeAction.action?pid=<s:property value="t.getPid()"/>">增加子节点</a>
					<br>
					<%
						} else {
					%>
					</td><td><a href="./saveCourseAction.action">增加课件</a>
					<br>
					<%
						}
					%>

				</td></tr>
				<%
					}
				%>

			
		</table>
	</body>
</html>


分享到:
评论

相关推荐

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

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

    PHP递归生成TREE

    在给定的场景中,`tree.php` 文件很可能是实现递归生成树结构的PHP代码。这个文件可能包含一个函数,该函数接受一个数组(通常是数据库查询结果),然后通过递归地遍历这个数组来构建一个多级的树。每个数组元素代表...

    java递归实现树(Tree)

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

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

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

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

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

    递归实现的 ADF Dynamic tree

    本文将深入探讨如何使用递归实现ADF(Attribute Dependency Framework)动态树。ADF动态树是一种数据结构,它能够根据特定规则自动生成或调整树状结构,常用于数据建模、图形用户界面设计或解析复杂数据结构。 首先...

    不用递归实现的无限级树型菜单

    传统的实现方式通常使用递归算法,但这种方法可能会导致内存消耗过大,尤其是在菜单层级很深的情况下。本主题介绍了一种不依赖递归的高效方法来创建无限级树型菜单,具有快速加载的特点。 首先,我们来看`WriteXML....

    Tree使用递归显示

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

    用递归实现C#树形结构

    总结来说,用递归实现C#树形结构的关键在于理解树的节点结构以及递归函数的设计。通过创建表示节点的类并定义递归遍历方法,我们可以轻松地处理各种树形数据结构的操作。递归方法在处理树形结构时不仅简洁,而且效率...

    TreeView用递归实现无限级树.rar

    这个"TreeView用递归实现无限级树.rar"压缩包文件很可能是包含了一个或多个示例,教你如何在C#中使用递归方法来构建一个可以无限扩展的TreeView,用于显示多层的数据结构,例如数据库中的分类或者层级关系。...

    php递归实现无限级分类库

    使用递归实现无限级分类的好处在于其灵活性和简洁性。它适用于任何数量的分类级别,且代码易于维护。然而,当分类数量非常大时,递归可能会导致性能问题,因为每次递归调用都会增加内存消耗。这时,可以考虑使用其他...

    tree easyui java 树递归

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

    树形下拉列表 递归实现

    总结起来,实现树形下拉列表的递归实现涉及以下几个关键步骤: 1. 在SQL Server中,使用递归CTE获取层级数据。 2. 将获取的数据库数据转换为前端可处理的树形结构。 3. 使用JavaScript或其他前端框架(如React)渲染...

    二叉树与树的转换前序、后序的递归、非递归算法,层次序的非递归算法的实现,应包含建树的实现。

    非递归实现同样使用栈来模拟递归过程: ```cpp void F_InOrder(BiNoderoot){ BiNodes[maxsize]; int top = 0; do { while (root != NULL) { s[++top] = root; root = root-&gt;lchild; } if (top &gt; 0) { root ...

    非递归实现二叉树的先、中、后序遍历

    非递归实现二叉树的先、中、后序遍历 typedef struct binarytree /*定义一棵二叉树*/ { char data; struct binarytree *LChild,*RChild; }BiTNode,*BiTree;

    sqlserver 2005 使用CTE 实现递归

    ### SQL Server 2005 中使用 CTE 实现递归 #### 一、CTE 递归原理 在 SQL Server 2005 中,使用公共表表达式(Common Table Expression, CTE)实现递归是一种高效且直观的方式。递归 CTE 通常由两部分构成:定位...

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

    在Vue.js中实现递归组件,需要给组件添加一个name属性,并在模板中使用自定义标签递归地引用组件本身。 示例中,我们首先定义了树形结构的数据,其中每个节点都包含一个label属性和一个可选的nodes属性。当一个节点...

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

    描述中提到,使用Oracle递归查询比在程序中实现递归查询速度更快。这是因为数据库系统通常针对这类操作进行了优化,能够更高效地处理层次结构数据。此外,数据库可以利用索引和其他优化技术,提高查询速度。而在应用...

    tree递归.rar

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

    linux 目录树实现代码递归

    本篇将深入探讨如何使用递归算法在C语言中实现Linux目录树的遍历。 首先,我们需要理解递归的概念。递归是一种解决问题的方法,它通过调用自身来解决子问题,直到达到基本情况。在处理目录树时,我们可以把根目录视...

Global site tag (gtag.js) - Google Analytics