예제 #1
0
 private void displayTreeInfo(FibTree tree, Label infoLabel)
 {
     infoLabel.Text = string.Format("Nodes: {0}, edges: {1}, max. depth: {2}",
                                    tree.NodeCount,
                                    tree.EdgeCount,
                                    tree.Root.GetDepth());
 }
예제 #2
0
 public MultiLookup(string ip, FibTree mFibTreeOriginal, FibTree mFibTreeNormalized, FibTree mFibTreeCompressed)
 {
     IP = ip;
     this.mFibTreeOriginal   = mFibTreeOriginal;
     this.mFibTreeNormalized = mFibTreeNormalized;
     this.mFibTreeCompressed = mFibTreeCompressed;
     DoLookup();
 }
예제 #3
0
 private void initModel()
 {
     mFibTableOriginal      = new FibTable();
     mFibTableNormalized    = new FibTable();
     mFibTableCompressed    = new FibTable();
     mFibTreeOriginal       = new FibTree();
     mFibTreeNormalized     = new FibTree();
     mFibTreeCompressed     = new FibTree();
     mMultiLookupCollection = new MultiLookupCollection();
     mFibTableOriginal.CollectionChanged += MFibTableOriginal_CollectionChanged;
     mFibTreeOriginal.TreeChanged        += MFibTreeOriginal_TreeChanged;
     mFibTreeNormalized.TreeChanged      += MFibTreeNormalized_TreeChanged;
     mFibTreeCompressed.TreeChanged      += MFibTreeCompressed_TreeChanged;
 }
        static void Main(string[] args)
        {
            while (true)
            {
                int number = Menu();

                if (number < 0)
                {
                    Console.WriteLine("Program exit.");
                    break;
                }

                List <int> fibonacciList = Fibonacci.FibSequence(number);
                FibTree    fibTree       = new FibTree(number);

                PrintFibonacciList(fibonacciList, number);
                PrintFibonacciDetails(fibTree);
            }
        }
        static void PrintFibonacciDetails(FibTree fibTree)
        {
            fibTree.PrintTreeLeftToRight();

            Console.WriteLine($"\nFibonacci tree height is {fibTree.GetHeight()}");

            Node r = fibTree.GetRoot();

            Console.WriteLine($"Root contain the number {r.GetItem()}");

            if (r.GetLeftChild() != null)
            {
                Console.WriteLine($"Root left child contain the number {r.GetLeftChild().GetItem()}");
            }
            if (r.GetRightChild() != null)
            {
                Console.WriteLine($"Root right child contain the number {r.GetRightChild().GetItem()}");
            }

            fibTree.LevelOrderTraverse();

            fibTree.InOrderTraverse(VisitItem);
            Console.WriteLine();
        }
예제 #6
0
 private void visualizeTree(FibTree tree, TreeView treeView)
 {
     treeView.Nodes.Clear();
     addNodeWithChildren(tree.Root, treeView, null, "");
     treeView.ExpandAll();
 }
예제 #7
0
        private void initNextHopTable(ref DataGridView originalTable, ref CustomDataGridView <FibTreeLabel> customMember, Panel container, FibTree fibTree)
        {
            customMember = CreateTable <FibTreeLabel>(ref originalTable, container);

            CustomDataGridViewColumnDescriptorBuilder <FibTreeLabel> builder;

            // Column: prefix, IP format
            builder = new CustomDataGridViewColumnDescriptorBuilder <FibTreeLabel>(customMember);
            builder.Type(DataGridViewColumnType.TextBox);
            builder.Header("Label");
            builder.Width(60);
            builder.UpdaterMethod((entry, cell) => { cell.Value = entry.Text; });
            builder.AddChangeEvent(nameof(FibEntry.IpForm));
            builder.BuildAndAdd();

            // Column: next hop
            builder = new CustomDataGridViewColumnDescriptorBuilder <FibTreeLabel>(customMember);
            builder.Type(DataGridViewColumnType.TextBox);
            builder.Header("IP address");
            builder.Width(120);
            builder.UpdaterMethod((entry, cell) => { cell.Value = entry.NextHop; });
            builder.AddChangeEvent(nameof(FibEntry.NextHop));
            builder.BuildAndAdd();

            // Bind database
            customMember.BoundCollection = fibTree.Labels;
        }