首页 > 其他分享 >递归获取某个节点的儿子节点

递归获取某个节点的儿子节点

时间:2024-04-19 11:23:31浏览次数:13  
标签:递归 parent List allChildren allDepartments Department 某个 节点

java 代码:

public List<Department> getAllChildrenDepartmentsFlat(Long parentId) {
        List<Department> allDepartments = departmentRepository.findAll();  // 假设使用JPA的Repository来进行数据库操作

        List<Department> allChildren = new ArrayList<>();
        Department parent = departmentRepository.findById(parentId);
        if (parent != null) {
            allChildren.add(parent);
            flattenChildren(allDepartments, parent, allChildren);
        }

        return allChildren;
    }

    private void flattenChildren(List<Department> allDepartments, Department parent, List<Department> flatList) {
        List<Department> children = allDepartments.stream()
                .filter(department -> department.getParentId().equals(parent.getId()))
                .collect(Collectors.toList());
        
        for (Department child : children) {
            flatList.add(child);
            flattenChildren(allDepartments, child, flatList);
        }
    }

  

标签:递归,parent,List,allChildren,allDepartments,Department,某个,节点
From: https://www.cnblogs.com/fishyues/p/18145414

相关文章

  • 树3-二叉树非递归遍历(栈)
    树3-二叉树非递归遍历(栈)拷贝根结点,初始值FALSE,入栈弹出,如果是FALSE,将根节点将更新为TRUE,其子结点(初始值FALSE)一并入栈[A,B,C](前序遍历,入栈顺序:C,B,A输出顺序:A,B,C)再弹出,如果是TRUE则输出引入链式栈头文件#include"linkedStack.h"链式栈头文......
  • 两种解法搞定链表相邻节点交换
    最近还是很喜欢用golang来刷算法题,更接近通用算法,也没有像动态脚本语言那些语法糖,真正靠实力去解决问题。下面这道题很有趣,也是一道链表题目,具体如下:24.SwapNodesinPairsSolvedMediumTopicsCompaniesGivenalinkedlist,swapeverytwoadjacentnodesandreturni......
  • ROS2笔记2--工作空间、功能包、节点
    一、工作空间(Workspace)ROS工作空间是用于存放ros功能包的一个文件夹,通常以ws结尾。用于存放工程开发相关的所有文件,包括源代码、编译生成的文件以及配置我呢见等。在ROS中工作空间是使用Catkin编译系统来组织和管理代码的基础单元。每个工作空间通常包含一个或多个功能包,这些功能......
  • poco节点关系大公开!
    此文章来源于项目官方公众号:“AirtestProject”版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途一、前言在自动化测试的实践中,我们发现许多同学在使用Poco框架进行控件定位时,对于节点之间的关系理解不够深入。那么本周让我们来详细讲解Poco框架中的child&chil......
  • LeetCode- 19 删除链表的倒数第N个节点
    题目地址https://leetcode.cn/problems/remove-nth-node-from-end-of-list/description/参考实现/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(){}*ListNode(intval){t......
  • 2024-04-17:用go语言,欢迎各位勇者莅临力扣城,本次的挑战游戏名为「力扣泡泡龙」。 游戏
    2024-04-17:用go语言,欢迎各位勇者莅临力扣城,本次的挑战游戏名为「力扣泡泡龙」。游戏的起点是一颗形状如二叉树的泡泡树,其中每个节点的值代表该泡泡的分值。勇者们有一次机会可以击破一个节点泡泡,但需要满足以下规则:被击破的节点泡泡最多只能有一个子节点泡泡。如果被击破的节点......
  • 记一次奇妙的某个edu渗透测试
    前话:对登录方法的轻视造成一系列的漏洞出现,对接口确实鉴权造成大量的信息泄露。从小程序到web端网址的奇妙的测试就此开始。(文章厚码,请见谅)1.寻找到目标站点的小程序进入登录发现只需要姓名加学工号就能成功登录,通过googlehack的语法成功找到学生姓名和学号,想直接找老师的工......
  • C++ 递归与面向对象编程基础
    C++递归递归是一种使函数调用自身的技术。这种技术提供了一种将复杂问题分解为简单问题的方法,从而更容易解决问题。递归可能有点难以理解。理解其工作原理的最佳方法是通过实验来尝试。递归示例将两个数字相加很容易做到,但将一系列数字相加就更复杂了。在下面的示例中,通过将......
  • 猴子吃桃 递归 循环 等比数列
    do-while#include<stdio.h>intmain(){intn=1;//第十天只剩下1个桃子,所以初始值为1intday=9;//第十天是已知条件,所以循环从第九天开始do{n=(n+1)*2;//每天都是前一天的一半加1,所以这里计算后一天的桃子数day--;//天数减1}while(day>=0);//......
  • R中遇到dplyr::filter等函数冲突--优先设置某个包
    用conflicted包解决参考:https://blog.csdn.net/qazplm12_3/article/details/119621588#1安装软件包install.packages("conflicted")#2显示冲突的包library(conflicted)conflict_scout()#3设置优先使用的包的函数(例如上述的`filter()`:dplyrandstats冲突)#优先使......