示例#1
0
 private static void InsertRecursive(ref BstItem tree, Item item, int digit)
 {
     if (tree == null)
     {
         tree = new BstItem(item);
         return;
     }
     if (BstTreeUtils.DigitBit(item.Key, digit)) // текущий бит ключа 1
     {
         InsertRecursive(ref tree.Right, item, digit + 1);
     }
     else // текущий бит ключа 0
     {
         InsertRecursive(ref tree.Left, item, digit + 1);
     }
 }
示例#2
0
 private Item SearchDstRecursive(BstItem tree, int key, int digit)
 {
     // следуем по дереву, заданному битами ИСКОМОГО/ВСТАВЛЯЕМОГО ключа
     if (tree == null)
     {
         return(null);
     }
     if (tree.Item.Key == key)
     {
         return(tree.Item);
     }
     if (BstTreeUtils.DigitBit(key, digit)) // current bit is 1
     {
         return(SearchDstRecursive(tree.Right, key, digit + 1));
     }
     else // current bit is 0
     {
         return(SearchDstRecursive(tree.Left, key, digit + 1));
     }
 }
示例#3
0
 public Item Select(int k)
 {
     return(BstTreeUtils.SelectRecursive(root, k));
 }
示例#4
0
 public void Remove(Item item)
 {
     --count;
     BstTreeUtils.RemoveRecursive(ref root, item.Key);
 }