public void AddChild(DominatorTreeNode child) { if (!ChildrenNodes.Contains(child)) { ChildrenNodes.Add(child); } }
/// <summary> /// /// </summary> /// <param name="tableName"></param> /// <param name="avTables">перечень таблиц, которые нам нужно для дерева</param> /// <param name="parentNode"></param> /// <param name="infoRows"></param> /// <param name="alterTables"></param> public Ais7IssoDefectsTreeNode2(string tableName, IList <string> avTables, Ais7IssoDefectsTreeNode parentNode, List <InfoRow> infoRows, List <CustomDefectAlterTable> alterTables) : base(false) { TableName = tableName; ParentNode = parentNode; ItemType = Ais7IssoDefectsTreeNodeType.Type1; // по умолчанию верхний уровень NGrConstr = infoRows.Find(x => x.SysName == tableName).Description; CGrConstr = infoRows.Find(x => x.SysName == tableName).CGrConstr; var subAlterTables = alterTables.Where(x => x.c_gr_constr == CGrConstr).ToList(); if (subAlterTables.Count > 0) { isForConstr = subAlterTables[0].is_constr; Life = subAlterTables[0].life; ItemType = (Ais7IssoDefectsTreeNodeType)subAlterTables[0].ITEM_TYPE; OrderInTree = subAlterTables[0].ord; } else { isForConstr = false; } foreach (var subtable in infoRows.Where(x => x.CGrConstr != 10 && x.ParentId == infoRows.Find(y => y.SysName == tableName).CGrConstr).ToList()) { if (avTables.IndexOf(subtable.SysName) != -1) { ChildrenNodes.Add(new Ais7IssoDefectsTreeNode2(subtable.SysName, avTables, this, infoRows, alterTables)); } } IsNotLeaf = ChildrenNodes.Count > 0; LoadDefectList(CGrConstr, alterTables); }
public bool ApplyAlphaRule() { foreach (var prop in CurrentNode) { var set = new HashSet <Proposition>(CurrentNode); set.Remove(prop); if (prop is Negation n && n.Operand is Negation n1) { set.Add(n1.Operand); var tableau = new SemanticTableau(set, ActiveVariables, PropositionsProcessedByGamma); ChildrenNodes.Add(tableau); stack.Push(tableau); return(true); }
/// <summary> /// 设置子节点 /// </summary> /// <param name="childNode"></param> public virtual void SetChildNode(INeuralNode childNode) { //childNode.SetParentNode(this); ChildrenNodes.Add(childNode); }