/** 删除节点的所有子节点。 */ public void deleteNode() { TreeNode parentNode = this.getParentNode(); String id = this.getId(); if (parentNode != null) { parentNode.deleteChildNode(id); } }
/** * 删除当前节点的某个子节点。 * * @param childId 子节点ID。 */ public void deleteChildNode(String childId) { List<TreeNode> childList = this.getChildList(); int childNumber = childList.size(); for (int i = 0; i < childNumber; i++) { TreeNode child = childList.get(i); if (child.getId() == childId) { childList.remove(i); return; } } }
/** * 获取当前节点的父辈节点集合。 * * @return 返回父辈节点的列表。 */ public List<TreeNode> getElders() { List<TreeNode> elderList = new ArrayList<TreeNode>(); TreeNode parentNode = this.getParentNode(); if (parentNode == null) { return elderList; } else { elderList.add(parentNode); elderList.addAll(parentNode.getElders()); return elderList; } }
/** 遍历一棵树,层次遍历。 */ public void traverse() { if (id == null) { return; } // 执行遍历后动作。 if (childList == null || childList.isEmpty()) return; int childNumber = childList.size(); for (int i = 0; i < childNumber; i++) { TreeNode child = childList.get(i); child.traverse(); } }
/** * 获取当前节点的晚辈集合。 * * @return 返回晚辈节点的列表。 */ public List<TreeNode> getJuniors() { List<TreeNode> juniorList = new ArrayList<TreeNode>(); List<TreeNode> childList = this.getChildList(); if (childList == null) { return juniorList; } else { int childNumber = childList.size(); for (int i = 0; i < childNumber; i++) { TreeNode junior = childList.get(i); juniorList.add(junior); juniorList.addAll(junior.getJuniors()); } return juniorList; } }
/** * 动态的插入一个新的节点到当前树中。 * * @param treeNode 要插入的节点。 * @return 如果成功,则返回 true;否则返回 false。 */ public boolean insertJuniorNode(TreeNode treeNode) { String juniorParentId = treeNode.getParentId(); if (this.parentId == juniorParentId) { addChildNode(treeNode); return true; } else { List<TreeNode> childList = this.getChildList(); int childNumber = childList.size(); boolean insertFlag; for (int i = 0; i < childNumber; i++) { TreeNode childNode = childList.get(i); insertFlag = childNode.insertJuniorNode(treeNode); if (insertFlag == true) return true; } return false; } }
/** * 根据ID查找树中的某个节点。 * * @param id 节点ID。 * @return 返回要查找的节点。 */ public TreeNode findTreeNodeById(String id) { if (this.id.equals(id)) { return this; } if (childList.isEmpty() || childList == null) { return null; } else { int childNumber = childList.size(); for (int i = 0; i < childNumber; i++) { TreeNode child = childList.get(i); TreeNode resultNode = child.findTreeNodeById(id); if (resultNode != null) { return resultNode; } } return null; } }