Esempio n. 1
0
 public bool addChild(DTreeNode child)
 {
     if (mChildMap.ContainsKey(child.getID()))
     {
         logError("不能再次添加同一个子节点");
         return(false);
     }
     mChildList.Add(child);
     mChildMap.Add(child.getID(), child);
     return(true);
 }
Esempio n. 2
0
 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;
     }
 }