0 0

求递归算法 树3

id  name  parentId

TestDemo right6 = new TestDemo(6,"客户添加",5);
TestDemo right7 = new TestDemo(7,"客户删除",5);
TestDemo right8 = new TestDemo(8,"客户修改",5);
TestDemo right5 = new TestDemo(5,"客户管理",0);
TestDemo right10 = new TestDemo(10,"VIP客户添加",6);
TestDemo right11 = new TestDemo(11,"普通客户添加",6);
rightList.add(right6);
rightList.add(right7);
rightList.add(right8);
rightList.add(right10);
rightList.add(right5);
rightList.add(right11);
========================================================
最终要求效果:[拼接成以下字符串]
首先 肯定是要判断有没有 父类节点为0的 有的话 那么 该条数据就为父节点



<sx:tree>
   <sx:treenode lable='客户管理'>
       <sx:treenode lable='客户添加'>
          <sx:treenode lable='VIP客户添加></sx:treenode>
          <sx:treenode lable='普通客户添加></sx:treenode>
       </sx:treenode>
       <sx:treenode lable='客户修改'></sx:treenode>
       <sx:treenode lable='客户删除'></sx:treenode>
   </sx:treenode>
</sx:tree>

客户添加 修改 删除的 父节点都为5    上面的应该很清楚了 
但是目前这个是2级  如果3级 甚至无限级 怎么递归   我这只能递归2级  如上图的 但是考虑长远 递归树的无限递归 
求各位指点迷津了!  小子不甚感激
2012年4月22日 23:43

2个答案 按时间排序 按投票排序

0 0

采纳的答案

public class TestDemo {
	private int id;
	private String name;
	private int parentId;
	private Set<TestDemo> child = new HashSet<TestDemo>();

	public String toXML(){
		StringBuffer xml = new StringBuffer();
		if(parentId==0){
			xml.append("<sx:tree>");
		}else{
			xml.append("<sx:treenode lable='"+name+"'>");
		}
		
		for(TestDemo td : child){
			xml.append(td.toXML());
		}
		
		if(parentId==0){
			xml.append("</sx:tree> ");
		}else{
			xml.append("</sx:treenode>");
		}
		return xml.toString();
	}
}

public static void main(String[] args) {
		List<TestDemo> rightList = new ArrayList<TestDemo>();
		TestDemo right6 = new TestDemo(6,"客户添加",5); 
		TestDemo right7 = new TestDemo(7,"客户删除",5); 
		TestDemo right8 = new TestDemo(8,"客户修改",5); 
		TestDemo right5 = new TestDemo(5,"客户管理",0); 
		TestDemo right10 = new TestDemo(10,"VIP客户添加",6); 
		TestDemo right11 = new TestDemo(11,"普通客户添加",6); 
		rightList.add(right6); 
		rightList.add(right7); 
		rightList.add(right8); 
		rightList.add(right10); 
		rightList.add(right5); 
		rightList.add(right11); 
		TestDemo root = getRoot(rightList);
		System.out.println(root.toXML());
	}

	public static TestDemo getRoot(List<TestDemo> list){
		TestDemo root = null;
		for(TestDemo td : list){
			if(td.getParentId()==0){
				root = td;
			}
		}
		initChild(root,list);
		return root;
	}
	public static void initChild(TestDemo tdemo,List<TestDemo> list){
		int parentId = tdemo.getId();
		for(TestDemo td : list){
			if(td.getParentId()==parentId){
				initChild(td,list);
				tdemo.getChild().add(td);
			}
		}
	}

2012年4月24日 17:45
0 0

没用过这个标签, 不过google了下, 可以用动态树,或者ajax树实现

2012年4月23日 16:50

相关推荐

    Java递归算法构造JSON树形结构

    Java 递归算法构造 JSON 树形结构 Java 递归算法构造 JSON 树形结构是指通过 Java 语言使用递归算法将数据库中的菜单表构建成树形的 JSON 格式发送给第三方。这种方法可以将复杂的树形结构数据转换成易于理解和处理...

    VC对磁盘文件遍历搜索的递归算法和非递归算法

    非递归算法在处理大量文件和深目录树时,性能通常优于递归算法,因为它减少了函数调用开销,且内存占用更可控。 **VC++实现细节**: 在提供的`查找指定文件.rar`压缩包中,可能包含了一个VC++工程文件,用于演示非...

    快速排序算法设计与分析总结 二叉树与树的转换前序、后序的递归、非递归算法,层次序的非递归算法的实现

    快速排序算法设计与分析总结 二叉树与树的转换前序、后序的递归、非递归算法,层次序的非递归算法的实现 二叉树与树的转换前序、后序的递归、非递归算法,层次序的非递归算法的实现,应包含建树的实现 实现树与...

    C#递归算法画树C#递归算法画树C#递归算法画树

    在本场景中,我们讨论的是如何使用递归算法来绘制树形图形。递归画树通常涉及到数据结构中的树(如二叉树、N叉树等)的可视化表示,或者在控制台上创建出类似树状的文本输出。 首先,让我们理解递归的基本概念。...

    .net 递归算法 .net 递归算法.net 递归算法

    在.NET编程环境中,递归算法是一种强大的工具,它允许函数或方法调用自身来解决复杂问题。递归的核心思想是将大问题分解为相同或相似的小问题,直到问题变得足够简单,可以直接得出答案。这种解决问题的方式在数据...

    acm递归算法总结竞赛

    9. **递归的应用**:在ACM竞赛中,递归算法广泛应用于图论(如深度优先搜索)、树结构处理(如二叉树遍历)和组合数学等领域。 10. **注意事项**:递归可能导致栈溢出,尤其是在没有正确设置终止条件或者问题规模过...

    利用递归算法求阶乘(VB6.0源代码)利用递归算法求阶乘

    在这个主题中,我们将深入探讨如何使用递归算法在VB6.0(Visual Basic 6.0)中计算阶乘。VB6.0是Microsoft开发的一款经典可视化编程环境,用于创建Windows应用程序。 阶乘是一个数学概念,表示一个正整数n的所有...

    先序遍历的非递归算法

    递归算法使用函数调用自身来构建树,而非递归算法使用循环和栈来构建树。 结论 本文详细介绍了二叉树的先序遍历非递归算法,包括其原理、实现代码和相关知识点。通过学习本文,读者可以更好地理解树遍历算法和非...

    程序设计中递归算法

    ### 递归算法在程序设计中的应用 #### 一、递归的概念与本质 递归是一种重要的编程思想,在计算机科学和数学领域都有广泛的应用。它指的是一个过程或函数直接或间接地调用自身来解决问题的方法。递归的核心在于将...

    递归算法计算二叉树中叶子节点的数目

    递归算法计算二叉树中叶子节点的数目

    递归算法总结

    其中,一维递归是最基本的递归算法,例如,求n!的递归算法。二维递归则是将问题分解成二维结构,例如,从t个数中挑出3个。并行递归则是将问题分解成多个小问题,然后并行解决这些小问题。 递归算法是一种非常重要...

    分形递归算法实现分叉树

    在分叉树的生成过程中,递归算法发挥了关键作用。递归算法的基本思路是将一个大问题分解为若干个相同或相似的小问题,然后通过解决这些小问题来获得原问题的答案。在分形树的案例中,每一根主干会“生长”出两根侧干...

    .Net 初学者的树控件和递归算法求阶乘

    在.NET框架中,树控件...总之,.NET初学者在学习过程中应掌握树控件的使用,如创建、操作节点和处理事件,同时理解并能应用递归算法,如求阶乘。通过实践和探索,可以提升编程能力,为后续的.NET开发奠定坚实基础。

    pb中使用递归算法实现树的遍历

    pb中使用递归算法实现树的遍历

    Hanoi塔问题的一种非递归算法

    ### Hanoi塔问题的一种非递归算法:深入解析与实现 #### 一、引言 Hanoi塔问题作为计算机科学领域内经典的递归问题之一,因其简洁性和挑战性而广受关注。通常,Hanoi塔问题的解决方案多采用递归算法,尽管其逻辑...

    中序遍历二叉树非递归算法

    在IT领域,尤其是在数据结构与算法的学习中,中序遍历二叉树的非递归算法是一个关键且实用的知识点。通常,我们首先通过递归来实现二叉树的遍历,但递归方法可能因深度过大导致栈溢出,因此掌握非递归版本的遍历算法...

    使用C++,请给出此题的递归算法及非递归算法。

    递归在解决分治策略、树遍历等问题时特别有用,而非递归算法则更适合处理那些可以通过简单循环解决的问题。 总结来说,C++中的递归算法和非递归算法各有优势和应用场景。在实际编程中,理解这两种方法的原理,结合...

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

    根据给定文件的信息,本文将详细介绍二叉树与树之间的转换方法,并且深入探讨树的前序、中序、后序遍历递归与非递归实现方式,以及层次遍历的非递归算法实现。 ### 二叉树与树的转换 在计算机科学中,树是一种常用...

    递归算法求阶乘.rar

    本篇文章将深入探讨递归算法在求解阶乘问题中的应用。 阶乘是一个数学概念,表示一个正整数n的所有小于等于n的正整数的乘积,通常用“!”表示。例如,5的阶乘(5!)是5×4×3×2×1=120。递归算法为计算阶乘提供了...

    递归算法应用:删除某一个节点的子树算法

    在数据结构中,递归算法广泛应用于树形结构的操作,例如二叉树的遍历、搜索、插入、删除等操作。今天,我们将讨论递归算法在删除某一个节点的子树算法中的应用。 问题描述:在二叉树中,删除值为 x 的节点,并删除...

Global site tag (gtag.js) - Google Analytics