示例#1
0
        static void Main(string[] args)
        {
            Tree <Student> tree = new Tree <Student>();
            var            sub  = new Subscriber();

            tree.ItemAdded   += sub.AddedMethod;
            tree.ItemRemoved += sub.RemovedMethod;

            for (int i = 0; i < 10; i++)
            {
                int val = i;
                tree.Add(new Student("Ivan", "Math", val));
            }


            foreach (var student in tree)
            {
                Console.WriteLine(student.Mark);
            }

            tree.Remove(new Student("Ivan", "Math", 5));



            foreach (var student in tree.PostOrder())
            {
                Console.WriteLine(student.Mark);
            }

            Student first  = new Student("Vanya", "Math", 1);
            Student second = new Student("Mark", "Math", 2);
            Student third  = new Student("Petya", "Math", 4);
            Student fourth = new Student("Serhii", "Math", 100);

            Tree <Student> megatree = new Tree <Student> {
                first, second, third, fourth
            };

            List <Student> list = new List <Student>()
            {
                first, fourth, third, second
            };

            foreach (var student in megatree.PreOrder())
            {
                Console.WriteLine(student.Mark);
            }
        }
示例#2
0
        static void Tree()
        {
            #region tree Construction
            Tree <int> tree = new Tree <int>(4);

            Node <int> node2 = new Node <int>(8);
            Node <int> node3 = new Node <int>(15);
            Node <int> node4 = new Node <int>(16);
            Node <int> node5 = new Node <int>(23);
            Node <int> node6 = new Node <int>(42);
            Node <int> node7 = new Node <int>(108);

            tree.Root.LeftChild  = node2;
            tree.Root.RightChild = node3;
            node2.LeftChild      = node4;
            node2.RightChild     = node5;
            node3.LeftChild      = node6;
            node3.RightChild     = node7;

            #endregion

            List <int> preOrder = tree.PreOrder(tree.Root);
            Console.WriteLine("======== PRE-ORDER =======");
            Console.WriteLine(string.Join(',', preOrder));
            Console.WriteLine();



            List <int> postOrder = tree.PostOrder(tree.Root);
            Console.WriteLine("======== POST-ORDER =======");
            Console.WriteLine(string.Join(',', postOrder));
            Console.WriteLine();


            List <int> inOrder = tree.InOrder(tree.Root);
            Console.WriteLine("======== IN-ORDER =======");

            Console.WriteLine(string.Join(',', inOrder));
            Console.WriteLine();


            List <int> breadth = tree.BreadthFirst(tree.Root);
            Console.WriteLine("======== BREADTH-FIRST =======");

            Console.WriteLine(string.Join(',', breadth));
        }
        public static void Main(string[] args)
        {
            Node currentNode = null;

            Tree.Insert(ref currentNode, 10);
            Tree.Insert(ref currentNode, 20);
            Tree.Insert(ref currentNode, 15);
            Tree.Insert(ref currentNode, 0);
            Tree.Insert(ref currentNode, 5);

            Console.WriteLine("contains tests:");

            Console.WriteLine($"{Tree.Contains(currentNode, 10) == true} , 10 exists");
            Console.WriteLine($"{Tree.Contains(currentNode, 4) == false} , 4 does not exist");
            Console.WriteLine($"{Tree.Contains(currentNode, 20) == true} , 20 exists");
            Console.WriteLine($"{Tree.Contains(currentNode, 0) == true} , 0 exists");
            Console.WriteLine($"{Tree.Contains(currentNode, 100) == false} , 100 does not exist");

            Console.WriteLine("find min tests:");

            Console.WriteLine($"{Tree.FindMin(currentNode) == 0} , 0 is the minumim");

            Console.WriteLine("find max tests:");

            Console.WriteLine($"{Tree.FindMin(currentNode) == 20} , 20 is the maximum");

            Console.WriteLine("level-order traversal - can be used for printing the tree:");
            Tree.LevelOrder(currentNode);


            Console.WriteLine();
            Console.WriteLine("pre-order traversal");
            Tree.PreOrder(currentNode);


            Console.WriteLine();
            Console.WriteLine("in-order traversal - can be used for sorting the tree:");
            Tree.InOrder(currentNode);


            Console.WriteLine();
            Console.WriteLine("post-order traversal");
            Tree.PostOrder(currentNode);
        }