From 65cf739fe077c398d35e58a083a1c7be40a3b7a2 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Sun, 06 Aug 2023 23:32:39 +0800
Subject: [PATCH] 数据修改

---
 src/main/java/cc/mrbird/febs/common/tree/MatrixTree.java |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/common/tree/MatrixTree.java b/src/main/java/cc/mrbird/febs/common/tree/MatrixTree.java
index 3b57b22..5e57dfa 100644
--- a/src/main/java/cc/mrbird/febs/common/tree/MatrixTree.java
+++ b/src/main/java/cc/mrbird/febs/common/tree/MatrixTree.java
@@ -4,6 +4,7 @@
 import lombok.extern.slf4j.Slf4j;
 
 import java.util.ArrayDeque;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -136,4 +137,31 @@
 
         return null;
     }
+
+    /**
+     * 获取某一个MemberNode的所有上级节点
+     * @param node MemberNode节点
+     * @return MemberNode的List,按照从上到下的顺序排列
+     */
+    public List<MemberNode> getAllAncestors(MemberNode node) {
+        List<MemberNode> ancestorList = new ArrayList<>();
+        getAllAncestorsHelper(node, ancestorList);
+        return ancestorList;
+    }
+
+    /**
+     * 递归辅助方法,用于获取某一个MemberNode的所有上级节点
+     * @param node 当前节点
+     * @param ancestorList 存储上级节点的List
+     */
+    private void getAllAncestorsHelper(MemberNode node, List<MemberNode> ancestorList) {
+        if (node == null || node.getRefererId() == null) {
+            return;
+        }
+
+        MemberNode parent = getNode(node.getRefererId());
+        ancestorList.add(parent);
+
+        getAllAncestorsHelper(parent, ancestorList);
+    }
 }

--
Gitblit v1.9.1