From b60463cc0b1c9f9150e336d1765f19ec07b81b5d Mon Sep 17 00:00:00 2001 From: luming Date: Fri, 28 May 2021 18:51:54 +0800 Subject: [PATCH] dfs --- src/main/java/Main.java | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 9c7ddb7..9ce63cf 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -19,8 +19,8 @@ public class Main { Deque stack = new ArrayDeque<>(); AtomicBoolean flag = new AtomicBoolean(false); // contractTypeDFS(841339223809196032L, typeTree, stack, flag); - Deque longs = treeFindPath(typeTree, 841338235396292608L, stack); - System.out.println(stack); + Deque longs = treeFindPath(typeTree, "LX844150457751306240", stack); + System.out.println(longs); } public static Deque treeFindPath(List tree, Long id, Deque stack){ @@ -44,6 +44,27 @@ public class Main { } return emptyStack; } + public static Deque treeFindPath(List tree, String code, Deque stack){ + Deque emptyStack = new ArrayDeque<>(); + if(CollectionUtils.isEmpty(tree)){ + return emptyStack; + } + for (Type type : tree) { + System.out.println(type.getId()); + stack.push(type.getId()); + if(Objects.equals(type.getCode(),code)){ + return stack; + } + if(CollectionUtils.isNotEmpty(type.getChildList())){ + Deque longs = treeFindPath(type.getChildList(), code, stack); + if(!longs.isEmpty()){ + return longs; + } + } + stack.pop(); + } + return emptyStack; + } public static List builldTree(List list){ ArrayList tree = Lists.newArrayList(); if(CollectionUtils.isNotEmpty(list)){