public float Sum(int range) { float sum = 0; int treeInd = range + 1; while (treeInd > 0) { sum += tree[treeInd]; treeInd -= GMath.LowBit(treeInd); } return(sum); }
public void Set(int index, float num) { float delta = num; if (index >= Count) { throw new Exception("[NumberTree Set] argument out of range"); } else { delta = num - values[index]; } int treeInd = index + 1; while (treeInd < TreeCount) { tree[treeInd] += num; treeInd += GMath.LowBit(treeInd); } }