`

一道简单递归算法

阅读更多
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++试题--递归”以及描述部分的内容来看,这是一道涉及递归算法的 C++ 编程题目。描述中的示例显示了一个通过用户输入 X-Y 坐标来填充一个特定形状(L 形)块到一个二维数组中的过程。用户首先输入...

    C语言,递归,求n的阶乘

    这是一道C语言 求n的阶乘,方法很简单,代码不超过5行

    简单的算法设计题目100道

    3. 5个正整数组合问题:这是一道组合数学问题,需要通过回溯或者动态规划找出5个数的组合,使得它们的和为23且所有可能的加法组合覆盖1到23。 4. 分解质因数:对于65535,需要分解为若干个质数的乘积,这需要质因数...

    蓝桥杯java历年真题

    蓝桥杯 Java 历年真题中的一道题目使用递归算法来实现全排列算法。递归算法的优点是可以简洁地解决问题,但缺点是可能会出现栈溢出错误。 Java 中实现递归算法需要注意调用函数的返回值和终止条件,避免出现栈溢出...

    算法系列大全

    这样的练习通常涵盖了基础到高级的算法题目,从简单的数组操作到复杂的动态规划问题,每一道题目都是一次锻炼思维的机会。通过解题,你可以强化对常见算法的理解,如分治法、递归、回溯、贪心、Dijkstra算法等。 ...

    算法面试题实用知识库分享

    本篇笔记主要介绍了算法面试题的基础知识范围,包括时间复杂度和空间复杂度的计算方法、递归算法的时间复杂度、图的遍历/DFS/BFS的时间复杂度等。这些基础知识点对于开发者来说非常重要,可以帮助他们更好地理解和...

    来来来,我们聊一聊,为什么不建议使用递归操作?

    首先,大家思考一道算法题:如何实现二叉树的中序遍历? 对于树的遍历,无论是前序、中序还是后序遍历,大家可能下意识的就会想到使用递归操作,为什么呢?因为递归操作实现起来“简单”啊! 下面为实现二叉树中序...

    蓝桥杯c++-蓝桥杯竞赛练习之算法提高题交换Easy.zip

    由于压缩包内的文件名为“蓝桥杯c++_蓝桥杯竞赛练习之算法提高题交换Easy”,我们可以推测这可能包含了一道或一系列的编程题目,题目可能要求选手使用C++编写程序来解决关于交换元素的问题。这类问题可能包括但不...

    java算法练习试题

    斐波那契数列在计算机科学中常用于理解和实践递归算法。编写一个Java程序来计算兔子繁殖问题,可以使用循环或递归方法。 【程序 2】此题要求找出101到200之间的素数。素数是大于1且只有1和其本身两个正因子的自然数...

    Algorithmic puzzles(算法谜题).pdf

    - 第四部分则是所有谜题的详细解答,不仅给出了答案,还解释了每一道题目的解题过程。 - **参考文献**:书籍最后列出了参考文献列表,供读者进一步阅读和学习。 - **索引**:书末附有设计策略和分析方法的索引,...

    javascript-leetcode面试题解递归与回溯问题之第77题组合-题解.zip

    第77题“组合”是LeetCode中的一道经典递归与回溯问题,旨在考察开发者对这两种编程技巧的理解和应用。 递归是一种解决问题的方法,它将一个问题分解为更小的子问题,直到子问题变得足够简单可以直接求解。递归通常...

    基于Java实现多个题目求解(算法课程)【100012653】

    在这里,我们需要编写Java代码来绘制分形树,这可能涉及递归算法和向量图形库如Java2D。 3. **三水杯倒水问题**: 这是一道经典的容量限制问题,我们需要找到将三个不同容量的杯子填满或清空特定水位的方法。解决...

    基础算法枚举贪心分治策略PPT学习教案.pptx

    分治策略是一种递归算法,将问题分解成规模更小的问题,然后递归解决这些问题。分治算法的优点是可以将问题简化,但需要注意递归的深度和时间复杂度。 本PPT学习教案对基础算法中的枚举策略、贪心策略和分治策略...

    算法Java经典.doc

    【算法Java经典】这篇文档包含了四道经典的Java算法题,主要涉及递归、素数判断、水仙花数以及质因数分解等基础算法概念。 首先,第一道题是著名的斐波那契数列(Fibonacci sequence)问题。斐波那契数列指的是这样...

    【大集合】C语言经典算法(二)

    本文将详细介绍C语言中一些经典的算法例子,这些例子覆盖了递归、循环控制、数学计算等多个方面,并通过具体代码示例帮助读者更好地理解并运用这些算法。 首先是猴子吃桃问题,这是一道经典的递推问题。问题描述了...

    scratch10道算法题及答案.zip

    Scratch是一种专为儿童设计的编程语言,它通过积木块式的编程界面,使得学习编程变得简单而有趣。本压缩包“scratch10道算法题及答案.zip”提供了10个精心设计的算法题目,旨在帮助孩子们提升逻辑思维能力和问题解决...

    tju acm 2805

    从给出的部分代码来看,该题目涉及到了递归算法的应用,主要使用了C++语言进行实现。 ### 代码解析 #### 基本结构 代码中包含了一个`main`函数和一个辅助函数`digui`。`main`函数中通过循环读取输入,并调用`...

Global site tag (gtag.js) - Google Analytics