当前位置: 首页 > news >正文

【数据结构和算法】--N叉树返回根节点到目标节点的路径

目录

  • 一、前言
  • 二、Java代码实现

一、前言

项目中接触一个问题:在大量有父子关系的列表中,需要筛选出特定约束的数据【要求某个目标节点延续到根节点的数据】。这个问题抽象为数据结构,就是:N叉树返回根节点到目标节点的路径

二、Java代码实现

  public void createTreeInfo(){//查询所有的  有树形结构的列表数据List<NodeTreeDo> originList = new ArrayList<>();//构建出每层level的父子关系Map<String, List<NodeTreeDo>> children = originList.stream().collect(Collectors.groupingBy(node -> node.getParentId()));originList.forEach(node -> node.setChildren(children.get(node.getId())));//过滤得到从根节点""出发的所有N叉树链路//   List<NodeTreeDo> collect = originList.stream().filter(k->"".equals(k.getParentId())).collect(Collectors.toList());List<NodeTreeDo> collect = originList.stream().filter(k->"".equals(k.getId())).collect(Collectors.toList()); //从根节点level=0层得到所有链路数据}public List<String> getPathFromRoot(NodeTreeDo root,String targetId){
//        NodeTreeDo root = new NodeTreeDo();
//        root.setParentId("");
//        root.setId("00001");
//        root.setChildren(new ArrayList<>()); //具体的tree结构,这里做模拟样例/*** root是完整的树形结构*/LinkedList<String> path = new LinkedList<>(); //找到从根节点到指定接定节点的路径getPathFromRoot(root,targetId,path);return path;}private boolean getPathFromRoot(NodeTreeDo root,String targetId, LinkedList<String> path){if(null == root) return false;String classid = root.getId();path.add(classid);if(classid.equals(targetId)) return true;boolean flag = false;List<NodeTreeDo> children = root.getChildren();if (null != children && !children.isEmpty()) {for (int i = 0; i < children.size(); i++) {if (!flag) {flag = getPathFromRoot(root.getChildren().get(i), targetId, path);}}}if (!flag) {path.remove(path.size() - 1);//孩子中都找不到,弹出栈顶元素}return flag;}

相关文章:

【数据结构和算法】--N叉树返回根节点到目标节点的路径

目录 一、前言二、Java代码实现 一、前言 项目中接触一个问题&#xff1a;在大量有父子关系的列表中&#xff0c;需要筛选出特定约束的数据【要求某个目标节点延续到根节点的数据】。这个问题抽象为数据结构&#xff0c;就是&#xff1a;N叉树返回根节点到目标节点的路径 二、…...

Flutter环境搭建踩坑集锦

Flutter 背景准备工作先检查一下自己的电脑&#xff0c;看一下是不是满足配置要求下载安装配置环境下载安装JDK下载安装Android studio下载Flutterflutter doctor故障Android license status unknownNetwork resources 故障 后记 背景 发现一个不错的框架Flutter&#xff0c;听…...

WPF上位机7——MySql

MySql DML语句 db操作、表操作 字段的数据类型 修改表 表的数据操作 DQL语句 数据查询和去重查询 条件查询 模糊查询 聚合查询 分组查询 排序查询 分页查询 DCL语句 函数 字符串处理函数 数值函数 日期函数 流程函数 约束 外键约束 多表查询 内连接 外连接 自连接 子查询 列…...

Linux的基本指令(2)

指令1&#xff1a;man 作用&#xff1a;可以查询linux指令语法内容。 格式&#xff1a; man 指令 安装man指令&#xff1a; yum install -y man-pages 例如&#xff1a; 查询 指令 ls 的语法内容。 man ls 查询 fork 指令的语法内容。 man fork 在man中存在9个手册&…...

mySql-Linux-安装

mySql-Linux-通过YUM安装 下载 yum 源 [rootspark ~]# wget http://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm --2023-07-31 22:51:21-- http://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm 正在解析主机 repo.mysql.com (repo.mysql.com…...

JS实现IOS标准时间(JSON时间格式)格式转yyyy-mm-dd格式

JS实现IOS时间格式转yyyy-mm-dd格式 /*** IOS时间格式转yyyy-mm-dd格式*param iosDate [IOS时间格式]*return {string} [yyyy-mm-dd]**/ const convertIOSDateFormat (iosDate) > {if(!iosDate) {return -;}const date new Date(iosDate);const year date.getFullYear()…...

【Jmeter】 Report Dashboard 生成html图形测试报告

目录 背景 生成图形报告的方式 1、直接使用一个已存在的 CSV文件生成 2、负载测试完成后自动生成 使用示例 报告内容详情 测试报告摘要图 响应时间随时间变化曲线 活跃线程随时间变化曲线 I/O&#xff08;Bytes&#xff09;随时间变化曲线(忽略事务控制器示例结果) …...

7种有效安全的网页抓取方法,如何避免被禁止?

网页抓取是一种从互联网上抓取网页内容的过程&#xff0c;但在网络抓取种相信您也经常遇到障碍&#xff1f;尤其是做跨境业务的&#xff0c;在抓取国外的网站时更有难度。但我们站在您的立场上&#xff0c;提供七种有效的方法来进行网页抓取而不被阻止&#xff0c;最大限度地降…...

flask服务生成证书文件,采用https访问,开启用户密码验证

openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 3072开启用户密码验证 auth.verify_password def verify_password(username, password):if username abcdefg and password 1234546:return usernameapp.route(/post_request, methods[POST…...

上海首个“零工”就业云平台上线

1.背景 今年6月&#xff0c;黄浦区人社局在建立新业态新职业岗位信息发布机制&#xff0c;挖掘数字经济、电商微商、兼职、共享、远程等新业态岗位的基础上&#xff0c;和人力资源机构携手打造全市首个“新经济、新业态”零工就业云平台。 2. 平台简介 平台上汇聚了新生代互…...

面试必考精华版Leetcode104. 二叉树的最大深度

题目&#xff1a; 代码&#xff08;首刷自解 day23&#xff09;&#xff1a; class Solution { public:int maxDepth(TreeNode* root) {if(rootnullptr) return 0;return max(maxDepth(root->left),maxDepth(root->right))1;} };...

winform panel中放置 usercontrol ,设置usercontrol随着dpi分辨率变化

在 WinForms 中&#xff0c;如果要使 UserControl 随着 DPI 分辨率的变化而自适应调整大小&#xff0c;可以遵循以下步骤&#xff1a; 使用 Anchor 和 Dock 属性&#xff1a;在 UserControl 中的控件布局时&#xff0c;使用 Anchor 和 Dock 属性来适应父控件的大小变化。 处理…...

更新页面无法回显

需求与问题&#xff1a; 在菜品管理开发中&#xff0c;我需要修改菜品&#xff0c;第一步是回显页面&#xff0c;但在我再三确认代码无误的情况下依旧无法回显内容 问题发现与解决&#xff1a; 经过排查&#xff0c;我发现我的DishDTO内容如下&#xff1a; Data public clas…...

CS 144 Lab Four -- the TCP connection

CS 144 Lab Four -- the TCP connection TCPConnection 简述TCP 状态图代码实现完整流程追踪 测试 对应课程视频: 【计算机网络】 斯坦福大学CS144课程 Lab Three 对应的PDF: Lab Checkpoint 4: down the stack (the network interface) TCPConnection 简述 TCPConnection 需…...

在Volo.Abp微服务中使用SignalR

假设需要通过SignalR发送消息通知&#xff0c;并在前端接收消息通知的功能 创建SignalR服务 在项目中引用 abp add-package Volo.Abp.AspNetCore.SignalR在Module文件中添加对模块依赖 [DependsOn(...typeof(AbpAspNetCoreSignalRModule))] public class IdentityApplicati…...

数据可视化(七)常用图表的绘制

1. #seaborn绘制常用图表 #折线图 #replot&#xff08;x&#xff0c;y&#xff0c;kind&#xff0c;data&#xff09; #lineplot&#xff08;x&#xff0c;y&#xff0c;data&#xff09; #直方图 #displot&#xff08;data&#xff0c;rug&#xff09; #条形图 #barplot&…...

【ARM 常见汇编指令学习 8 - dsb sy 指令及 dsb 参数介绍】

文章目录 ARM dsb sy 指令 上篇文章&#xff1a;ARM 常见汇编指令学习 7 - LDR 指令与LDR伪指令及 mov指令 下篇文章&#xff1a;ARM 常见汇编指令学习 9 - 缓存管理指令 DC 与 IC ARM dsb sy 指令 数据同步屏障是一种特殊类型的内存屏障。 只有当DSB指令执行完毕后&#xff…...

YOLOv5本地模型训练报错解决

报错解决 页面文件太小&#xff0c;无法完成操作 训练过程中&#xff0c;发生下图所示的报错&#xff0c;同时pycharm崩溃 1. 更改虚拟内存 进入高级系统设置&#xff0c;应该都会进&#xff0c;就不说过程了 设置虚拟内存大小 2. 减小占用内容大小 新建一个fixNvPe.py程序…...

tomcat p12证书另存为nginx .crt证书和.key私钥

tomcat p12证书另存为nginx .crt证书和.key私钥 Tomcat使用的.pfx或.keystore文件都是私钥及公钥证书一起的&#xff0c;通过pin保证安全&#xff1b;nginx只需要使用.pem或.crt公钥证书文件和.key私钥即可&#xff0c;如果原ssl证书不方便重新下载&#xff0c;在已有tomcat证…...

Docker的userland-proxy

前言 Docker针对端口映射前后有两种方案&#xff0c;一种是1.7版本之前docker-proxyiptables DNAT 的方式&#xff1b;另一种则是1.7版本(及之后)提供的完全由iptables DNAT实现的端口映射。不过在目前docker 1.9.1中&#xff0c;前一种方式依旧是默认方式。但是从Docker 1.7版…...

掌握智能体推理:让大模型在动态环境中持续学习与进化,小白程序员必备收藏

本文深入探讨了智能体推理这一新兴范式&#xff0c;旨在解决大语言模型在开放、动态环境中的推理能力瓶颈。文章提出的三层框架&#xff08;基础、自进化、集体&#xff09;及两种优化模式&#xff08;上下文推理、后训练推理&#xff09;&#xff0c;为构建适应动态环境的智能…...

墨语灵犀Java开发实战:集成SpringBoot构建智能问答API

墨语灵犀Java开发实战&#xff1a;集成SpringBoot构建智能问答API 最近在做一个内部知识库项目&#xff0c;需要给系统加上智能问答的能力。团队评估了几种方案&#xff0c;最终决定基于墨语灵犀大模型&#xff0c;用我们最熟悉的Java和SpringBoot来构建API服务。整个过程走下…...

Hybrid A*路径规划器:自动驾驶车辆运动规划的终极解决方案

Hybrid A*路径规划器&#xff1a;自动驾驶车辆运动规划的终极解决方案 【免费下载链接】path_planner Hybrid A* Path Planner for the KTH Research Concept Vehicle 项目地址: https://gitcode.com/gh_mirrors/pa/path_planner Hybrid A路径规划器是KTH Research Conc…...

Istio mTLS 与零信任网络:Sidecar 证书管理

# Istio mTLS 与零信任网络&#xff1a;Sidecar 证书管理深度解析> **标签**: #Istio #mTLS #零信任 #证书管理 #服务网格 > **阅读时间**: 约 15 分钟 > **难度**: ⭐⭐⭐⭐## &#x1f4d6; 引言在云原生时代,微服务架构的广泛应用带来了前所未有的安全挑战。传…...

internlm2-chat-1.8b在教育场景应用:自动批改作文+生成习题的AI助教落地案例

internlm2-chat-1.8b在教育场景应用&#xff1a;自动批改作文生成习题的AI助教落地案例 想象一下&#xff0c;一位语文老师深夜还在批改堆积如山的作文本&#xff0c;既要圈出错别字、病句&#xff0c;又要写评语、给建议&#xff0c;常常忙到深夜。另一边&#xff0c;数学老师…...

碧蓝航线自动化终极指南:3大核心功能+5步部署解放你的游戏时间

碧蓝航线自动化终极指南&#xff1a;3大核心功能5步部署解放你的游戏时间 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研&#xff0c;全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript 你…...

别被“纯解释型语言”骗了:揭开 Python 运行机制的真实底牌

在编程语言的鄙视链中&#xff0c;Python 经常被贴上一个标签&#xff1a;“它只是一门解释型语言&#xff0c;所以它很慢。” 这种刻板印象往往来自于我们在命令行里敲下 python script.py 后它立即运行的爽快感。没有漫长的 make&#xff0c;没有 gcc 编译报错&#xff0c;仿…...

Express路由与Sequelize的完美结合:构建企业级RESTful API的最佳实践

Express路由与Sequelize的完美结合&#xff1a;构建企业级RESTful API的最佳实践 【免费下载链接】express-example A proposal for the usage of Sequelize within an Express.JS application. 项目地址: https://gitcode.com/gh_mirrors/ex/express-example Express路…...

Gecco插件扩展机制:自定义下载器、渲染器和管道的开发指南

Gecco插件扩展机制&#xff1a;自定义下载器、渲染器和管道的开发指南 【免费下载链接】gecco Easy to use lightweight web crawler&#xff08;易用的轻量化网络爬虫&#xff09; 项目地址: https://gitcode.com/gh_mirrors/ge/gecco 什么是Gecco爬虫框架&#xff1f;…...

世界第一个开源可商用 .NET Office 转 PDF 工具/库 - MiniPdf涝

1. 智能软件工程的范式转移&#xff1a;从库集成到原生框架演进 在生成式人工智能&#xff08;Generative AI&#xff09;从单纯的文本生成向具备自主规划与执行能力的“代理化&#xff08;Agentic&#xff09;”系统跨越的过程中&#xff0c;.NET 生态系统正在经历一场自该平台…...