public bool addChild(DTreeNode child) { if (mChildMap.ContainsKey(child.getID())) { logError("不能再次添加同一个子节点"); return(false); } mChildList.Add(child); mChildMap.Add(child.getID(), child); return(true); }
public bool removeChild(DTreeNode child) { if (!mChildMap.ContainsKey(child.getID())) { logError("找不到子节点,无法移除"); return(false); } mChildList.Remove(child); mChildMap.Remove(child.getID()); return(true); }
public void addNode(DTreeNode parent, DTreeNode node) { // 当前没有根节点,则设置根节点 if (mRootNode == null) { mRootNode = node; } // 除了根节点以外,其他所有节点必须拥有一个已经添加到决策树的子节点 else { if (parent != null && !mNodeList.ContainsKey(parent.getID())) { logError("找不到父节点,不能将节点添加到该节点下"); return; } } mNodeList.Add(node.getID(), node); node.setParent(parent); parent?.addChild(node); }
// 移除一个叶节点 public void removeNode(DTreeNode node) { if (node.getChildList().Count > 0) { logError("can not remove a node which has child! use clearNode instead!"); return; } // 从父节点中移除 if (node.getParent() != null) { node.mParent.removeChild(node); } // 清除节点的父节点 node.setParent(null); // 将节点从列表中移除 mNodeList.Remove(node.getID()); if (node == mRootNode) { mRootNode = null; } }