Пример #1
0
  /** 删除节点的所有子节点。 */
  public void deleteNode() {
    TreeNode parentNode = this.getParentNode();
    String id = this.getId();

    if (parentNode != null) {
      parentNode.deleteChildNode(id);
    }
  }
Пример #2
0
 /**
  * 删除当前节点的某个子节点。
  *
  * @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;
     }
   }
 }
Пример #3
0
 /**
  * 获取当前节点的父辈节点集合。
  *
  * @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;
   }
 }
Пример #4
0
 /** 遍历一棵树,层次遍历。 */
 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();
   }
 }
Пример #5
0
 /**
  * 获取当前节点的晚辈集合。
  *
  * @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;
   }
 }
Пример #6
0
  /**
   * 动态的插入一个新的节点到当前树中。
   *
   * @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;
    }
  }
Пример #7
0
  /**
   * 根据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;
    }
  }