static Tree<int> ParseTree()
        {
            var nodes = new Dictionary<int, Node<int>>();
            Console.Write("Number of nodes:");
            int n = int.Parse(Console.ReadLine());
            Console.WriteLine("Start typing the node pairs separated by a single space");
            
            for (int i = 0; i < n-1; i++)
            {
                var pair = Console.ReadLine().Split();
                int first = int.Parse(pair[0]);
                int second = int.Parse(pair[1]);
                if (!nodes.ContainsKey(first))
                {
                    Node<int> parent = new Node<int>(first);
                    nodes.Add(first, parent);
                }

                if (!nodes.ContainsKey(second))
                {
                    Node<int> newNode = new Node<int>(second);
                    newNode.HasParent = true;
                    nodes.Add(second,newNode);
                    nodes[first].Children.Add(newNode);
                }

                nodes[first].Children.Add(nodes[second]);
                nodes[second].HasParent=true;

                
            }
            var root = nodes.First(x => x.Value.HasParent == false);
            var tree = new Tree<int>(root.Value);
            return tree;
        }
Exemplo n.º 2
0
        public static Tree<int> GenerateTreeFtomTreeNodes(TreeNode<int>[] nodeArray)
        {
            bool[] isChild = new bool[nodeArray.Length];
            foreach (var node in nodeArray)
            {
                if (node != null)
                {
                    foreach (var child in node)
                    {
                        isChild[child.Value] = true;
                    }
                }
            }

            for (int i = 0; i < isChild.Length; i++)
            {
                if (!isChild[i])
                {
                    Tree<int> tree = new Tree<int>(i);
                    GenerateTreeFromFoor(tree, nodeArray);
                    return tree;
                }
            }

            throw new ArgumentException("No root!!!");
        }
Exemplo n.º 3
0
        public void Add1ElementGetListCount1()
        {
            var intTree = new Tree<int>();
            intTree.Add(0);

            Assert.AreEqual(1, intTree.Traverse().Count);
        }
 //Node root=null;
 public bool AreSimilarTrees(Tree T1, Tree T2)
 {
     Node Root1 = T1.GetRoot();
     Node Root2 = T2.GetRoot();
     if (T1 == null || T2 == null)
         return false;
     return CompareTrees(Root1, Root2);
 }
Exemplo n.º 5
0
 // Use this for initialization
 void Start()
 {
     Bots    = new List <GameObject>();
     WebTree = new Tree.Tree <NeiralNet.NeuralNetwork>(null, BorderLevel);
     WebTree.MaxLevelReach += WebTree_MaxLevelReach;
     _bestWeb  = null;
     _worstWeb = null;
 }
 static void Main()
 {
     var ex = new Tree("parent",
         new Tree("child 1"),
         new Tree("child 2",
             new Tree("grandchild 1"),
             new Tree("grandchild 2")));
     Console.WriteLine(ex);
     Console.ReadLine();
 }
Exemplo n.º 7
0
 private void generateTreeView(Tree.Node<Tree.Record> node, TreeNode nodePath)
 {
     int ind = 0;
     foreach (Tree.Node<Tree.Record> child in node.Children)
     {
         //treeView.Nodes[node.Data.ToString].Nodes.Add(child.Data);
         nodePath.Nodes.Add(child.Data.ToString());
         generateTreeView(child, nodePath.Nodes[ind++]);
     }
 }
Exemplo n.º 8
0
        public void BalancedTreeFor6ElementsGetCorrectList()
        {
            var intTree = new Tree<int>();
            var resultList = new List<int>(new[] {3, 1, 0, 2, 4, 5});

            for (int i = 0; i < 6; i++)
                intTree.Add(i);

            CollectionAssert.AreEqual(resultList, intTree.Traverse());
        }
Exemplo n.º 9
0
        public void DirectTraversingFor3ElementsGet213List()
        {
            var intTree = new Tree<int>();
            intTree.Add(1);
            intTree.Add(2);
            intTree.Add(3);

            var resultList = new List<int>(new[] { 2, 1, 3 });
            CollectionAssert.AreEqual(resultList, intTree.Traverse());
        }
Exemplo n.º 10
0
        public void DirectTraversingFor3ElementsGet213List()
        {
            var intTree = new Tree<int>();
            intTree.Add(1);
            intTree.Add(2);
            intTree.Add(3);

            var resultList = new List<int>(new[] { 2, 1, 3 });
            for (int i = 0; i < 3; i++)
                Assert.AreEqual(resultList[i], intTree.Traverse()[i]);
        }
Exemplo n.º 11
0
        public void ReverseTraversingFor3ElementsGet132List()
        {
            var intTree = new Tree<int>();
            intTree.Add(1);
            intTree.Add(2);
            intTree.Add(3);

            intTree.Traversing = new ReverseTraversing<int>();

            var resultList = new List<int>(new[] { 1, 3, 2 });
            for (int i = 0; i < 3; i++)
                Assert.AreEqual(resultList[i], intTree.Traverse()[i]);
        }
Exemplo n.º 12
0
        public void GetEnumeratorFor3ElementsGetEnumerator213()
        {
            var intTree = new Tree<int>();
            intTree.Add(1);
            intTree.Add(2);
            intTree.Add(3);

            var resultEnumerator = intTree.GetEnumerator();
            var expectedEnumerator = (new List<int>(new[] { 2, 1, 3 })).GetEnumerator();
            for (int i = 0; i < 3; i++)
            {
                resultEnumerator.MoveNext();
                expectedEnumerator.MoveNext();
                Assert.AreEqual(expectedEnumerator.Current, resultEnumerator.Current);
            }
        }
Exemplo n.º 13
0
 static void Main(string[] args)
 {
     var tree = new Tree<int>();
     tree.Add(5);
     tree.Add(2);
     tree.Add(45);
     tree.Add(1);
     tree.Add(3);
     tree.Add(13);
     tree.Add(41);
     tree.Add(70);
     tree.Add(60);
     tree.Add(80);
     var BFS = new BreadthFirstRound<int>(tree, 3);
     BFS.EventAfterGettingIntoNewNode += PrintCurrentNode;
     BFS.Start();
 }
Exemplo n.º 14
0
        public void ReverseTraversingFor3ElementsGet132List()
        {
            var intTree = new Tree<int>();
            intTree.Add(1);
            intTree.Add(2);
            intTree.Add(3);

            intTree.Traversing = new ReverseTraversing<int>();

            var resultList = new List<int>(new[] { 1, 3, 2 });
            CollectionAssert.AreEqual(resultList, intTree.Traverse());
        }
Exemplo n.º 15
0
 public void AddParent(Tree <T> parent)
 {
     this.Parent = parent;
 }
Exemplo n.º 16
0
 public void AddChild(Tree <T> child)
 {
     this._children.Add(child);
 }
Exemplo n.º 17
0
 private static void GenerateTreeFromFoor(Tree<int> tree, TreeNode<int>[] nodeArray)
 {
     foreach (TreeNode<int> node in nodeArray[tree.Root.Value])
     {
         tree.Root.AddChild(node);
         GenerateSubnodes(node, nodeArray);
     }
 }
Exemplo n.º 18
0
        public void SymmetrycTraversingFor3ElementsGet123List()
        {
            var intTree = new Tree<int>();
            intTree.Add(2);
            intTree.Add(1);
            intTree.Add(3);

            intTree.Traversing = new SymmetricTraversing<int>();

            var resultList = new List<int>(new[] { 1, 2, 3 });
            for (int i = 0; i < 3; i++)
                Assert.AreEqual(resultList[i], intTree.Traverse()[i]);
        }
Exemplo n.º 19
0
        public void SymmetrycTraversingFor3ElementsGet123List()
        {
            var intTree = new Tree<int>();
            intTree.Add(2);
            intTree.Add(1);
            intTree.Add(3);

            intTree.Traversing = new SymmetricTraversing<int>();

            var resultList = new List<int>(new[] { 1, 2, 3 });
            CollectionAssert.AreEqual(resultList, intTree.Traverse());
        }
Exemplo n.º 20
0
        public void SymmetrycTraversingForReverce10ElementsGetCorrectList()
        {
            var intTree = new Tree<int>();
            var resultList = new List<int>();

            for (int i = 10; i > 0; i--)
            {
                intTree.Add(i);
                resultList.Add(10 - i + 1);
            }

            intTree.Traversing = new SymmetricTraversing<int>();

            CollectionAssert.AreEqual(resultList, intTree.Traverse());
        }
Exemplo n.º 21
0
 private bool IsRoot(Tree <T> node)
 {
     return(node.Parent == null);
 }
Exemplo n.º 22
0
 public void CreateEmptyTree()
 {
     ITree<int> tree = new Tree<int>(6);
     Assert.AreEqual(6, tree.Root.Value);
 }
Exemplo n.º 23
0
        public static void MajorMethod()
        {
            string file1 = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "VehicleClaims.txt");

            // Get only mutiple vehicle accidents.
            var vehicleClaims = Cache.GetVehicleClaims(file1)
                                    .GroupBy(v => v.ClaimNumber)
                                    .Where(g => g.Count() > 1)
                                    .SelectMany(v => v.Where(c => IsValidVehicleRegistrationNumber(c.VehicleRegistionNumber))).ToList();

            var validVehicleRegistrationNumbers = vehicleClaims.Select(r => r.VehicleRegistionNumber)
                                                                .Where(r => IsValidVehicleRegistrationNumber(r))
                                                                .Distinct()
                                                                .ToArray();

            string file = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, DateTime.Now.ToString("yyyyMMddHHmmss") + ".txt");

            using (StreamWriter sw = new StreamWriter(file))
            {
                sw.AutoFlush = true;
                sw.WriteLine("Found a circle");
                for (int i = 0; i < validVehicleRegistrationNumbers.Length; i++)
                {
                    try
                    {
                        decimal percentage = (decimal)(i * 100) / validVehicleRegistrationNumbers.Length;
                        Console.WriteLine(string.Format(@"{0}:{1}/{2}({3}%)", validVehicleRegistrationNumbers[i], i,
                            validVehicleRegistrationNumbers.Length, percentage.ToString("F5")));

                        var rootClaim = vehicleClaims.Where(v => v.VehicleRegistionNumber == validVehicleRegistrationNumbers[i])
                                                           .OrderByDescending(v => v.EventDate)
                                                           .FirstOrDefault();

                        var root = new Node()
                        {
                            ClaimInfo = new Claim()
                            {
                                ClaimNumber = rootClaim.ClaimNumber,
                                VehicleRegistrationNumber = rootClaim.VehicleRegistionNumber,
                                EventDate = rootClaim.EventDate
                            },
                            Parent = null
                        };

                        BuildTree2(root, vehicleClaims, new List<string>());

                        if (root.Children.Count <= 0) continue;

                        Tree tr = new Tree() { Root = root };
                        int depth = Tree.GetDepth(tr.Root);

                        if (depth >= 2)
                        {
                            var circles = tr.GetCircles();

                            if (circles.Count > 0)
                            {
                                foreach (var cc in circles)
                                {
                                    // Remove claims happended in one day.

                                    sw.WriteLine("=======================================");
                                    sw.WriteLine("Found a circle:" + cc.GetTraceString());
                                    sw.WriteLine(tr.ToString());

                                    Console.WriteLine("=======================================");
                                    Console.WriteLine("Found a circle:" + cc.GetTraceString());
                                    Console.WriteLine(tr.ToString());
                                }
                            }
                        }

                    }
                    catch (Exception ex)
                    {
                        sw.WriteLine(ex.Message);
                        Console.WriteLine("Exception:" + ex.Message + ex.StackTrace);
                    }
                }
            }
        }
Exemplo n.º 24
0
        public static void MajorMethod()
        {
            string file1 = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "VehicleClaims.txt");

            // Get only mutiple vehicle accidents.
            var vehicleClaims = Cache.GetVehicleClaims(file1)
                                .GroupBy(v => v.ClaimNumber)
                                .Where(g => g.Count() > 1)
                                .SelectMany(v => v.Where(c => IsValidVehicleRegistrationNumber(c.VehicleRegistionNumber))).ToList();

            var validVehicleRegistrationNumbers = vehicleClaims.Select(r => r.VehicleRegistionNumber)
                                                  .Where(r => IsValidVehicleRegistrationNumber(r))
                                                  .Distinct()
                                                  .ToArray();

            string file = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, DateTime.Now.ToString("yyyyMMddHHmmss") + ".txt");

            using (StreamWriter sw = new StreamWriter(file))
            {
                sw.AutoFlush = true;
                sw.WriteLine("Found a circle");
                for (int i = 0; i < validVehicleRegistrationNumbers.Length; i++)
                {
                    try
                    {
                        decimal percentage = (decimal)(i * 100) / validVehicleRegistrationNumbers.Length;
                        Console.WriteLine(string.Format(@"{0}:{1}/{2}({3}%)", validVehicleRegistrationNumbers[i], i,
                                                        validVehicleRegistrationNumbers.Length, percentage.ToString("F5")));

                        var rootClaim = vehicleClaims.Where(v => v.VehicleRegistionNumber == validVehicleRegistrationNumbers[i])
                                        .OrderByDescending(v => v.EventDate)
                                        .FirstOrDefault();

                        var root = new Node()
                        {
                            ClaimInfo = new Claim()
                            {
                                ClaimNumber = rootClaim.ClaimNumber,
                                VehicleRegistrationNumber = rootClaim.VehicleRegistionNumber,
                                EventDate = rootClaim.EventDate
                            },
                            Parent = null
                        };

                        BuildTree2(root, vehicleClaims, new List <string>());

                        if (root.Children.Count <= 0)
                        {
                            continue;
                        }

                        Tree tr = new Tree()
                        {
                            Root = root
                        };
                        int depth = Tree.GetDepth(tr.Root);

                        if (depth >= 2)
                        {
                            var circles = tr.GetCircles();

                            if (circles.Count > 0)
                            {
                                foreach (var cc in circles)
                                {
                                    // Remove claims happended in one day.

                                    sw.WriteLine("=======================================");
                                    sw.WriteLine("Found a circle:" + cc.GetTraceString());
                                    sw.WriteLine(tr.ToString());

                                    Console.WriteLine("=======================================");
                                    Console.WriteLine("Found a circle:" + cc.GetTraceString());
                                    Console.WriteLine(tr.ToString());
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        sw.WriteLine(ex.Message);
                        Console.WriteLine("Exception:" + ex.Message + ex.StackTrace);
                    }
                }
            }
        }
Exemplo n.º 25
0
 private void WebTree_MaxLevelReach()
 {
     _bestWeb  = WebTree.MaxRightValue();
     _worstWeb = WebTree.MaxLeftValue();
     WebTree   = new Tree.Tree <NeiralNet.NeuralNetwork>(NeiralNet.NeuralNetwork.Mixing(WebTree.MaxLeftValue(), WebTree.MaxRightValue()), BorderLevel);
 }
Exemplo n.º 26
0
        public void SymmetrycTraversingFor10lementsGetCorrectList()
        {
            var intTree = new Tree<int>();
            var resultList = new List<int>();

            for (int i = 0; i < 10; i++)
            {
                intTree.Add(i);
                resultList.Add(i);
            }

            intTree.Traversing = new SymmetricTraversing<int>();

            CollectionAssert.AreEqual(resultList, intTree.Traverse());
        }
Exemplo n.º 27
0
 private bool IsLeaf(Tree <T> node)
 {
     return(node.Children.Count == 0);
 }
Exemplo n.º 28
0
        public static void TestMethod1()
        {
            var targetClaim = DataProvider.GetClaim();

            var match1 = DataProvider.GetClaim();
            var match2 = DataProvider.GetClaim();
            var match3 = DataProvider.GetClaim();

            match1.VehicleRegistrationNumber = targetClaim.VehicleRegistrationNumber;
            match2.VehicleRegistrationNumber = targetClaim.VehicleRegistrationNumber;
            match3.VehicleRegistrationNumber = targetClaim.VehicleRegistrationNumber;

            var rootNode = new Node
            {
                ClaimInfo = targetClaim,
                Parent = null,
                Children = new List<Node>()
                {
                    new Node()
                    {
                        ClaimInfo = DataProvider.GetClaim(),
                        Children = DataProvider.GetNodes(3)
                    },

                    new Node()
                    {
                        ClaimInfo = DataProvider.GetClaim(),
                        Children = DataProvider.GetNodes(2)
                    },

                    new Node()
                    {
                        ClaimInfo = DataProvider.GetClaim(),
                        Children = new List<Node>()
                        {
                            new Node()
                            {
                                ClaimInfo = DataProvider.GetClaim(),
                                Children = new List<Node>()
                                {
                                    new Node()
                                    {
                                        ClaimInfo = DataProvider.GetClaim(),
                                        Children = new List<Node>()
                                        {
                                            DataProvider.GetNode(),
                                            DataProvider.GetNode(),
                                            DataProvider.GetNode(),
                                            new Node()
                                            {
                                                ClaimInfo = match1,
                                                Children = DataProvider.GetNodes(4)
                                            },
                                        }
                                    },

                                    new Node()
                                    {
                                        ClaimInfo = DataProvider.GetClaim(),
                                        Children = new List<Node>()
                                        {
                                            new Node()
                                            {
                                                ClaimInfo = match2
                                            },
                                            DataProvider.GetNode(),
                                            DataProvider.GetNode()
                                        }
                                    }
                                }
                            },

                            new Node()
                            {
                                 ClaimInfo = DataProvider.GetClaim(),
                                 Children = DataProvider.GetNodes(4)
                            }
                        }
                    },
                }
            };

            var tree = new Tree() { Root = rootNode };
            string treeStr = tree.ToString();

            var circles = tree.GetCircles();
            foreach (var c in circles)
            {
                Console.WriteLine(c.GetTraceString());
            }
        }
Exemplo n.º 29
0
        public static void TestMethod1()
        {
            var targetClaim = DataProvider.GetClaim();

            var match1 = DataProvider.GetClaim();
            var match2 = DataProvider.GetClaim();
            var match3 = DataProvider.GetClaim();

            match1.VehicleRegistrationNumber = targetClaim.VehicleRegistrationNumber;
            match2.VehicleRegistrationNumber = targetClaim.VehicleRegistrationNumber;
            match3.VehicleRegistrationNumber = targetClaim.VehicleRegistrationNumber;

            var rootNode = new Node
            {
                ClaimInfo = targetClaim,
                Parent    = null,
                Children  = new List <Node>()
                {
                    new Node()
                    {
                        ClaimInfo = DataProvider.GetClaim(),
                        Children  = DataProvider.GetNodes(3)
                    },

                    new Node()
                    {
                        ClaimInfo = DataProvider.GetClaim(),
                        Children  = DataProvider.GetNodes(2)
                    },

                    new Node()
                    {
                        ClaimInfo = DataProvider.GetClaim(),
                        Children  = new List <Node>()
                        {
                            new Node()
                            {
                                ClaimInfo = DataProvider.GetClaim(),
                                Children  = new List <Node>()
                                {
                                    new Node()
                                    {
                                        ClaimInfo = DataProvider.GetClaim(),
                                        Children  = new List <Node>()
                                        {
                                            DataProvider.GetNode(),
                DataProvider.GetNode(),
                DataProvider.GetNode(),
                                            new Node()
                                            {
                                                ClaimInfo = match1,
                                                Children  = DataProvider.GetNodes(4)
                                            },
                                        }
                                    },

                                    new Node()
                                    {
                                        ClaimInfo = DataProvider.GetClaim(),
                                        Children  = new List <Node>()
                                        {
                                            new Node()
                                            {
                                                ClaimInfo = match2
                                            },
                                            DataProvider.GetNode(),
                                            DataProvider.GetNode()
                                        }
                                    }
                                }
                            },

                            new Node()
                            {
                                ClaimInfo = DataProvider.GetClaim(),
                                Children  = DataProvider.GetNodes(4)
                            }
                        }
                    },
                }
            };


            var tree = new Tree()
            {
                Root = rootNode
            };
            string treeStr = tree.ToString();

            var circles = tree.GetCircles();

            foreach (var c in circles)
            {
                Console.WriteLine(c.GetTraceString());
            }
        }