Example #1
0
        public static void FCNS()   // First Child Next Sibling. Children weten niet wie hun parent is, siblings weten niet wie hun vorige sibling is
        {
            FCNSTree <char> tree = new FCNSTree <char>(null);

            FCNSNode <char> A = new FCNSNode <char>('A', null, null);
            FCNSNode <char> B = new FCNSNode <char>('B', null, null);
            FCNSNode <char> C = new FCNSNode <char>('C', null, null);
            FCNSNode <char> D = new FCNSNode <char>('D', null, null);
            FCNSNode <char> E = new FCNSNode <char>('E', null, null);
            FCNSNode <char> F = new FCNSNode <char>('F', null, null);
            FCNSNode <char> G = new FCNSNode <char>('G', null, null);
            FCNSNode <char> H = new FCNSNode <char>('H', null, null);
            FCNSNode <char> I = new FCNSNode <char>('I', null, null);
            FCNSNode <char> J = new FCNSNode <char>('J', null, null);
            FCNSNode <char> K = new FCNSNode <char>('K', null, null);

            tree.root = A;
            A.child   = B;
            B.child   = F;
            F.sibling = G;
            B.sibling = C;
            C.sibling = D;
            D.child   = H;
            D.sibling = E;
            E.child   = I;
            I.sibling = J;
            J.child   = K;

            Console.WriteLine(tree.Size());
            tree.PrintPreOrder();
        }
Example #2
0
        public static void Main(string[] args)
        {
            // First Child / Next Sibling Tree

            // Structure:
            //
            //          A
            //		  / | \ \
            //       B	C  D E
            //	    / \	   | | \
            //	   F   G   H I	J
            //					|
            //					K
            //

            Console.WriteLine("First Child / Next Sibling Tree:");
            var myFCNSTree = new FCNSTree <char>('A');

            myFCNSTree.Root.AddChild('B').AddChild('F').AddSibling('G');
            myFCNSTree.Root.AddChild('C');
            myFCNSTree.Root.AddChild('D').AddChild('H');
            myFCNSTree.Root.AddChild('E').AddChild('I').AddSibling('J').AddChild('K');
            myFCNSTree.PrintPreOrder();                                                       // A B F G C D H E I J K
            Console.WriteLine(myFCNSTree.Root);                                               // A
            Console.WriteLine(myFCNSTree.Root.FirstChild);                                    // B
            Console.WriteLine(myFCNSTree.Root.FirstChild.NextSibling.NextSibling.FirstChild); // H
            Console.WriteLine("--------------------------------------------------------------");


            // Binary Tree

            // Structure:
            //
            //		4
            //	   / \ 
            //	  2	  6
            //   / \
            //	1	3
            //

            Console.WriteLine("Binary Tree:");
            var myBinaryTree = new BinaryTree <int>(4);

            myBinaryTree.Root.AddLeftChild(2);
            myBinaryTree.Root.AddRightChild(6);
            myBinaryTree.Root.LeftChild.AddLeftChild(1);
            myBinaryTree.Root.LeftChild.AddRightChild(3);

            myBinaryTree.PrintPreOrder();               // 4 2 1 3 6
            myBinaryTree.PrintInOrder();                // 1 2 3 4 6
            myBinaryTree.PrintPostOrder();              // 1 3 2 6 4

            Console.WriteLine("Size: " + myBinaryTree.Size);
            Console.WriteLine("Height: " + myBinaryTree.Height);

            var newTree = new BinaryTree <int>(4);

            newTree.Root.AddLeftChild(2);
            newTree.Root.AddRightChild(6);

            myBinaryTree.Merge(12, myBinaryTree, newTree);
            Console.WriteLine("PrettyPrint: " + myBinaryTree);
            Console.WriteLine("--------------------------------------------------------------");


            // Binary Search Tree
            //
            // Structure:
            //
            //		6
            //	   / \ 
            //	  4	  7
            //   / \
            //	2	5
            //

            Console.WriteLine("Binary Search Tree:");
            var myBinarySearchTree = new BinarySearchTree.BinarySearchTree(6);

            myBinarySearchTree.Insert(4);
            myBinarySearchTree.Insert(7);
            myBinarySearchTree.Insert(2);
            myBinarySearchTree.Insert(5);

            Console.WriteLine("InOrder: " + myBinarySearchTree.InOrder());

            Console.WriteLine("RemoveMin()");
            myBinarySearchTree.Remove(2);

            Console.WriteLine("InOrder: " + myBinarySearchTree.InOrder());

            Console.WriteLine("FindMin: " + myBinarySearchTree.FindMin());
            Console.WriteLine("FindMax: " + myBinarySearchTree.FindMax());

            Console.WriteLine("PrettyPrint: " + myBinarySearchTree);
            Console.WriteLine("--------------------------------------------------------------");

            // Binary MinHeap

            Console.WriteLine("Binary MinHeap:");
            var myBinaryHeap = new BinaryMinHeap.BinaryMinHeap();

            myBinaryHeap.Insert(2);
            myBinaryHeap.Insert(10);
            myBinaryHeap.Insert(8);
            myBinaryHeap.Insert(1);
            myBinaryHeap.Insert(6);
            myBinaryHeap.Insert(9);

            Console.WriteLine("Heap: " + myBinaryHeap);

            Console.WriteLine("Value: " + myBinaryHeap.Value);

            Console.WriteLine("Removed: " + myBinaryHeap.Remove());
            Console.WriteLine("Removed: " + myBinaryHeap.Remove());

            Console.WriteLine("Value: " + myBinaryHeap.Value);

            Console.WriteLine("Removed: " + myBinaryHeap.Remove());
            Console.WriteLine("Removed: " + myBinaryHeap.Remove());

            Console.WriteLine("Value: " + myBinaryHeap.Value);

            Console.WriteLine("Heap: " + myBinaryHeap);
            Console.WriteLine("--------------------------------------------------------------");
        }