diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/tree/TreeUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/tree/TreeUtil.java
index 5f9c1f102..d9cc3432d 100644
--- a/hutool-core/src/main/java/org/dromara/hutool/core/tree/TreeUtil.java
+++ b/hutool-core/src/main/java/org/dromara/hutool/core/tree/TreeUtil.java
@@ -243,6 +243,42 @@ public class TreeUtil {
return result;
}
+ /**
+ * 获取所有父节点ID列表
+ *
+ *
+ * 比如有个人在研发1部,他上面有研发部,接着上面有技术中心
+ * 返回结果就是:[研发部, 技术中心]
+ *
+ * @param 节点ID类型
+ * @param node 节点
+ * @param includeCurrentNode 是否包含当前节点的名称
+ * @return 所有父节点ID列表,node为null返回空List
+ * @since 5.8.22
+ */
+ public static List getParentsId(MapTree node, boolean includeCurrentNode) {
+ final List result = new ArrayList<>();
+ if (null == node) {
+ return result;
+ }
+
+ if (includeCurrentNode) {
+ result.add(node.getId());
+ }
+
+ MapTree parent = node.getParent();
+ T id;
+ while (null != parent) {
+ id = parent.getId();
+ parent = parent.getParent();
+ if(null != id || null != parent){
+ // issue#I795IN,根节点的null不加入
+ result.add(id);
+ }
+ }
+ return result;
+ }
+
/**
* 创建空Tree的节点
*