import java.util.ArrayList;
import java.util.List;
public class Test {
static String output = "";
static List<City> list = new ArrayList<City>();
public static void main(String[] args) {
list.add(new City(1, "中国", 0, ""));
list.add(new City(2, "四川", 1, "中国"));
list.add(new City(3, "北京", 1, "中国"));
list.add(new City(4, "成都", 2, "四川"));
list.add(new City(5, "朝阳区", 3, "北京"));
City firstNode = (City)list.get(0);
System.out.println(visit(firstNode.ParentID));
}
// 递归算法
private static String visit(Integer ID) {
for (City node : list) {
if (node.ParentID == ID) {
// 这里是关键
output += "<node label='" + node.Name + "'>" + "\n";
visit(node.ID);
output += "</node>" + "\n";
}
}
return output;
}
}
输出结果如下:
<node label='中国'>
<node label='四川'>
<node label='成都'>
</node>
</node>
<node label='北京'>
<node label='朝阳区'>
</node>
</node>
</node>
分享到:
相关推荐
根据提供的标题“C++试题--递归”以及描述部分的内容来看,这是一道涉及递归算法的 C++ 编程题目。描述中的示例显示了一个通过用户输入 X-Y 坐标来填充一个特定形状(L 形)块到一个二维数组中的过程。用户首先输入...
这是一道C语言 求n的阶乘,方法很简单,代码不超过5行
3. 5个正整数组合问题:这是一道组合数学问题,需要通过回溯或者动态规划找出5个数的组合,使得它们的和为23且所有可能的加法组合覆盖1到23。 4. 分解质因数:对于65535,需要分解为若干个质数的乘积,这需要质因数...
蓝桥杯 Java 历年真题中的一道题目使用递归算法来实现全排列算法。递归算法的优点是可以简洁地解决问题,但缺点是可能会出现栈溢出错误。 Java 中实现递归算法需要注意调用函数的返回值和终止条件,避免出现栈溢出...
这样的练习通常涵盖了基础到高级的算法题目,从简单的数组操作到复杂的动态规划问题,每一道题目都是一次锻炼思维的机会。通过解题,你可以强化对常见算法的理解,如分治法、递归、回溯、贪心、Dijkstra算法等。 ...
本篇笔记主要介绍了算法面试题的基础知识范围,包括时间复杂度和空间复杂度的计算方法、递归算法的时间复杂度、图的遍历/DFS/BFS的时间复杂度等。这些基础知识点对于开发者来说非常重要,可以帮助他们更好地理解和...
首先,大家思考一道算法题:如何实现二叉树的中序遍历? 对于树的遍历,无论是前序、中序还是后序遍历,大家可能下意识的就会想到使用递归操作,为什么呢?因为递归操作实现起来“简单”啊! 下面为实现二叉树中序...
由于压缩包内的文件名为“蓝桥杯c++_蓝桥杯竞赛练习之算法提高题交换Easy”,我们可以推测这可能包含了一道或一系列的编程题目,题目可能要求选手使用C++编写程序来解决关于交换元素的问题。这类问题可能包括但不...
斐波那契数列在计算机科学中常用于理解和实践递归算法。编写一个Java程序来计算兔子繁殖问题,可以使用循环或递归方法。 【程序 2】此题要求找出101到200之间的素数。素数是大于1且只有1和其本身两个正因子的自然数...
- 第四部分则是所有谜题的详细解答,不仅给出了答案,还解释了每一道题目的解题过程。 - **参考文献**:书籍最后列出了参考文献列表,供读者进一步阅读和学习。 - **索引**:书末附有设计策略和分析方法的索引,...
第77题“组合”是LeetCode中的一道经典递归与回溯问题,旨在考察开发者对这两种编程技巧的理解和应用。 递归是一种解决问题的方法,它将一个问题分解为更小的子问题,直到子问题变得足够简单可以直接求解。递归通常...
在这里,我们需要编写Java代码来绘制分形树,这可能涉及递归算法和向量图形库如Java2D。 3. **三水杯倒水问题**: 这是一道经典的容量限制问题,我们需要找到将三个不同容量的杯子填满或清空特定水位的方法。解决...
分治策略是一种递归算法,将问题分解成规模更小的问题,然后递归解决这些问题。分治算法的优点是可以将问题简化,但需要注意递归的深度和时间复杂度。 本PPT学习教案对基础算法中的枚举策略、贪心策略和分治策略...
【算法Java经典】这篇文档包含了四道经典的Java算法题,主要涉及递归、素数判断、水仙花数以及质因数分解等基础算法概念。 首先,第一道题是著名的斐波那契数列(Fibonacci sequence)问题。斐波那契数列指的是这样...
本文将详细介绍C语言中一些经典的算法例子,这些例子覆盖了递归、循环控制、数学计算等多个方面,并通过具体代码示例帮助读者更好地理解并运用这些算法。 首先是猴子吃桃问题,这是一道经典的递推问题。问题描述了...
Scratch是一种专为儿童设计的编程语言,它通过积木块式的编程界面,使得学习编程变得简单而有趣。本压缩包“scratch10道算法题及答案.zip”提供了10个精心设计的算法题目,旨在帮助孩子们提升逻辑思维能力和问题解决...
从给出的部分代码来看,该题目涉及到了递归算法的应用,主要使用了C++语言进行实现。 ### 代码解析 #### 基本结构 代码中包含了一个`main`函数和一个辅助函数`digui`。`main`函数中通过循环读取输入,并调用`...