| | |
| | | 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; |
| | | } |
| | |
| | | * 层级遍历,查到子节点未满3个的节点 |
| | | * @return |
| | | */ |
| | | public MemberNode findNotWholeNode() { |
| | | public MemberNode findNotWholeNode(MemberNode root) { |
| | | ArrayDeque<MemberNode> deque = new ArrayDeque<>(); |
| | | deque.add(root); |
| | | |
| | |
| | | return result; |
| | | } |
| | | |
| | | public MemberNode findNotWholeNode() { |
| | | return findNotWholeNode(root); |
| | | } |
| | | |
| | | /** |
| | | * 查找整个树下对应节点 |
| | | * @param param memberId/address/inviteId |
| | |
| | | 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); |
| | |
| | | } |
| | | |
| | | 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; |