Ejemplo n.º 1
0
 public void RemoveNodeType(LabeledNodeType type, LabeledNode node)
 {
     if (TypeNodes.ContainsKey(type))
     {
         TypeNodes[type].Remove(node);
     }
 }
Ejemplo n.º 2
0
        public List <TreeNode> FindNodes(TypeNodes type)
        {
            var list = new List <TreeNode>();

            this.FindInTree(type, list);

            return(list);
        }
Ejemplo n.º 3
0
        public void RemoveZeroNodeTypes()
        {
            var zeroNodeTypes = TypeNodes.Keys.Where(k => TypeNodes[k].Count == 0).ToList();

            for (var i = zeroNodeTypes.Count() - 1; i >= 0; i--)
            {
                var currentType = zeroNodeTypes[i];
                TypeNodes.Remove(currentType);
                UsedTypes.Remove(currentType.GetQuasiUniqueRepresentation());
            }
        }
Ejemplo n.º 4
0
        public virtual void AddNodeType(LabeledNodeType type, LabeledNode node)
        {
            if (!UsedTypes.ContainsKey(type.GetQuasiUniqueRepresentation()))
            {
                TypeNodes.Add(type, new List <LabeledNode>(10));
                UsedTypes.Add(type.GetQuasiUniqueRepresentation(), type);
                node.Type = type;
            }
            else
            {
                node.Type = UsedTypes[type.GetQuasiUniqueRepresentation()];
            }

            TypeNodes[node.Type].Add(node);
        }
Ejemplo n.º 5
0
        private bool CheckIfIsSearchedNodeType(TreeNode nextNode, TypeNodes searchedType)
        {
            bool isCorrectTypeOfNode = false;

            if (searchedType == TypeNodes.Leaf)
            {
                if (nextNode.ChildNodes.Count == 0)
                {
                    isCorrectTypeOfNode = true;
                }
            }
            else if (searchedType == TypeNodes.Middle)
            {
                if (nextNode.ChildNodes.Count > 1)
                {
                    isCorrectTypeOfNode = true;
                }
            }

            return(isCorrectTypeOfNode);
        }
Ejemplo n.º 6
0
        //1 2 3
        private void FindInTree(TypeNodes type, List <TreeNode> list)
        {
            var stack = new Stack <TreeNode>();

            stack.Push(this.Root);
            {
                while (stack.Count > 0)
                {
                    var nextNode = stack.Pop();
                    for (int i = 0; i < nextNode.ChildNodes.Count; i++)
                    {
                        stack.Push(nextNode.ChildNodes[i]);
                    }

                    if (this.CheckIfIsSearchedNodeType(nextNode, type))
                    {
                        list.Add(nextNode);
                    }
                }
            }
        }
Ejemplo n.º 7
0
        public override void AddNodeType(LabeledNodeType givenType, LabeledNode node)
        {
            var trueType = LabeledNode.GetType(node);

            if (trueType.FullFragment != givenType.FullFragment ||
                trueType.Part1Fragment != givenType.Part1Fragment ||
                trueType.Part2Fragment != givenType.Part2Fragment)
            {
                throw new ArgumentException("Given type does not equal true type.");
            }

            if (!UsedTypes.ContainsKey(givenType.GetQuasiUniqueRepresentation()))
            {
                TypeNodes.Add(givenType, new List <LabeledNode>(10));
                UsedTypes.Add(givenType.GetQuasiUniqueRepresentation(), givenType);
                node.Type = givenType;
            }
            else
            {
                node.Type = UsedTypes[givenType.GetQuasiUniqueRepresentation()];
            }

            TypeNodes[node.Type].Add(node);
        }