public void addChild(Node<T> child) { this.children.add(child); this.descendants.add(child); this.descendants.addAll(child.descendants); // 通知所有上级增加dept informParentAdd(child); // 更新dept的上级节点列表 child.updateParentAdd(this); }
/** * 移除一个节点 * * @param child */ public void removeChild(Node<T> child) { // 直属上级移除子列表 this.children.remove(child); // 直属上级移除子孙列表 this.descendants.remove(child); this.descendants.removeAll(child.descendants); // 在祖先节点的子孙节点列表中移除dept informParentRemove(child); // 在dept的祖先节点列表中移除当前节点 child.updateParentRemove(this); }