Пример #1
0
 public VEBTree(uint k)
 {
     U = Convert.ToUInt32(Math.Pow(2, k));
     if (k % 2 == 0)
     {
         LowerK = UpperK = k / 2;
         UpperU = LowerU = Convert.ToUInt32(Math.Pow(2, k / 2));
     }
     else
     {
         LowerK = k / 2;
         UpperK = LowerK + 1;
         LowerU = Convert.ToUInt32(Math.Pow(2, k / 2));
         UpperU = LowerU << 1;
     }
     if (U == 2)
     {
         Summary = null;
         Cluster = null;
     }
     else
     {
         Summary = new VEBTree(UpperK);
         Cluster = new VEBTree[UpperU];
         for (uint i = 0; i < UpperU; i++)
         {
             Cluster[i] = new VEBTree(LowerK);
         }
     }
 }
Пример #2
0
        public static void TestValidation()
        {
            VEBTree k = new VEBTree(5);

            for (uint i = 0; i < 0x20; i++)
            {
                Console.WriteLine($"Inserting {i}");
                k.Insert(i);
            }
            for (uint i = 0; i < 0x20; i++)
            {
                Console.WriteLine($"Node {i}: IsMember={k.IsMember(i)}, Predecessor={k.Predecessor(i)}, Successor={k.Successor(i)}.");
            }
            uint[] numberToDelete = { 1, 2, 4, 6, 11, 31 };
            foreach (var a in numberToDelete)
            {
                k.Delete(a);
            }
            for (uint i = 0; i < 0x20; i++)
            {
                Console.WriteLine($"Node {i} IsMemeber={k.IsMember(i)}");
            }
        }