From 0c27432b33d4fdbf7a7fdccb678a5679efe65d84 Mon Sep 17 00:00:00 2001 From: Hentua <wangdoubleone@gmail.com> Date: Tue, 06 Jun 2023 09:21:55 +0800 Subject: [PATCH] fix --- src/main/java/cc/mrbird/febs/common/tree/MatrixTree.java | 32 ++++++++++++++++++++++++++++---- 1 files changed, 28 insertions(+), 4 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 7d7d263..ebcf9ff 100644 --- a/src/main/java/cc/mrbird/febs/common/tree/MatrixTree.java +++ b/src/main/java/cc/mrbird/febs/common/tree/MatrixTree.java @@ -40,7 +40,20 @@ return null; } - MemberNode parentNode = findNotWholeNode(); + MemberNode childTreeRoot = getNode(node.getRefererId()); + + MemberNode parentNode = findNotWholeNode(childTreeRoot == null ? root : childTreeRoot); + parentNode.addNode(node); + return parentNode; + } + + public MemberNode addNode(MemberNode node, Long parentNodeId) { + if (parentNodeId == null) { + root = node; + return null; + } + + MemberNode parentNode = getNode(parentNodeId); parentNode.addNode(node); return parentNode; } @@ -49,7 +62,7 @@ * 层级遍历,查到子节点未满3个的节点 * @return */ - public MemberNode findNotWholeNode() { + public MemberNode findNotWholeNode(MemberNode root) { ArrayDeque<MemberNode> deque = new ArrayDeque<>(); deque.add(root); @@ -77,6 +90,10 @@ return result; } + public MemberNode findNotWholeNode() { + return findNotWholeNode(root); + } + /** * 查找整个树下对应节点 * @param param memberId/address/inviteId @@ -85,6 +102,10 @@ public MemberNode getNode(Object param) { if (root == null) { return null; + } + + if (root.getMemberId().equals(param) || root.getPhone().equals(param) || root.getInviteId().equals(param)) { + return root; } return getNode(root.CHILD, param); @@ -103,11 +124,14 @@ } for (MemberNode node : nodeList) { - if (node.getMemberId().equals(param) || node.getAddress().equals(param) || node.getInviteId().equals(param)) { + if (node.getMemberId().equals(param) || node.getPhone().equals(param) || node.getInviteId().equals(param)) { return node; } - return getNode(node.CHILD, param); + MemberNode childNode = getNode(node.CHILD, param); + if (childNode != null) { + return childNode; + } } return null; -- Gitblit v1.9.1