示例#1
0
        public override FingerTree <T, M> App2(List <T> ts, FingerTree <T, M> f)
        {
            for (int i = ts.Count - 1; i >= 0; i--)
            {
                f = f.PushLeft(ts[i]);
            }

            return(f.PushLeft(_t));
        }
示例#2
0
 public override FingerTree <T, M> Merge(FingerTree <T, M> f) => f.PushLeft(_t);
示例#3
0
        public override FingerTree <T, M> PushLeft(T t)
        {
            if (_leftDigits.Digits.Count == 4)
            {
                return(new DeepFingerTree <T, M>(_m, new Digit <T, M>(_m, t, _leftDigits.Digits[0]), _fingerTree.PushLeft(new Node <T, M>(_m, _leftDigits.Digits.Skip(1).ToList())), _rightDigits));
            }
            else
            {
                var nl = new List <T>(_leftDigits.Digits);
                nl.Insert(0, t);

                return(new DeepFingerTree <T, M>(_m, new Digit <T, M>(_m, nl), _fingerTree, _rightDigits));
            }
        }