programming-examples/c-sharp/Others/BPlusTree.cs

57 lines
1.6 KiB
C#
Raw Normal View History

2019-11-15 12:59:38 +01:00
using System;
using System.Diagnostics.Contracts;
namespace DataStructures.BPlusTreeSpace
{
[Serializable]
public partial class BPlusTree<TKey, TValue>
where TKey : IComparable<TKey>
{
private INode<TKey, TValue> root;
/// <summary>
/// the maximum number of key value pairs in the leaf node, M must be > 0
/// </summary>
public readonly int NumberOfValuesInLeafNode;
/// <summary>
/// the maximum number of keys in inner node, the number of pointer is N+1, N must be > 2
/// </summary>
public readonly int NumberOfKeysInIntermediateNode;
[ContractInvariantMethod]
private void ObjectInvariant()
{
Contract.Invariant(NumberOfValuesInLeafNode > 0);
Contract.Invariant(NumberOfKeysInIntermediateNode > 2);
}
public BPlusTree(int m, int n)
{
Contract.Requires<ArgumentOutOfRangeException>(m > 0);
Contract.Requires<ArgumentOutOfRangeException>(n > 2);
NumberOfValuesInLeafNode = m;
NumberOfKeysInIntermediateNode = n;
}
private bool Find(TKey key, INode<TKey, TValue> node)
{
Contract.Requires<ArgumentNullException>(key != null);
Contract.Requires<ArgumentNullException>(node != null);
if (node is LeafNode<TKey, TValue>)
{
}
return false;
}
[Pure]
public bool Find(TKey key)
{
Contract.Requires<ArgumentNullException>(key != null);
return Find(key, root);
}
}
}