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; } }