Beispiel #1
0
        public ST PointedUpdate(int position, DO action, double value)
        {
            ST st = new ST();
            st.root = st.Copy(root);
            st.length = length;

            if (action == DO.ADD)
                pointed_update(ref st.root, 0, length - 1, position, ACTION.ADD, value);
            else
                pointed_update(ref st.root, 0, length - 1, position, ACTION.UPDATE, value);

            return st;
        }
Beispiel #2
0
        public ST MassUpdate(int left, int right, DO action, double value)
        {
            if (left == right)
                return PointedUpdate(left, action, value);
            else
            {
                ST st = new ST();
                st.root = st.Copy(root);
                st.length = length;

                if (action == DO.ADD)
                    mass_update(ref st.root, 0, length - 1, left, right, ACTION.ADD, value);
                else
                    mass_update(ref st.root, 0, length - 1, left, right, ACTION.UPDATE, value);

                return st;
            }
        }