示例#1
0
        private void SplitRecursive(
            TKey key,
            out TreeDictionary <TKey, TValue, TComparer> less,
            out Optional <TValue> value,
            out TreeDictionary <TKey, TValue, TComparer> greater)
        {
            if (Count == 0)
            {
                less    = Empty;
                value   = Optional <TValue> .None;
                greater = Empty;
                return;
            }
            int comparison = _Comparer.Compare(key, _key);

            if (comparison == 0)
            {
                less    = _left;
                value   = Optional.Some(_value);
                greater = _right;
                return;
            }
            if (comparison < 0)
            {
                _left.SplitRecursive(key, out less, out value, out greater);
                greater = Unbalanced(_key, _value, greater, _right);
                return;
            }
            else
            {
                _right.SplitRecursive(key, out less, out value, out greater);
                less = Unbalanced(_key, _value, _left, less);
                return;
            }
        }