  Concurrent data structures serve as fundamental building blocks for
concurrent computing. Many concurrent counterparts have been designed for basic
sequential mechanisms; however, one notable omission is a concurrent tree that
supports aggregate queries. Aggregate queries essentially compile succinct
information about a range of data items, for example, calculating the average
salary of employees in their 30s. Such queries play an essential role in
various applications and are commonly taught in undergraduate data structures
courses. In this paper, we formalize a type of aggregate queries that can be
efficiently supported by concurrent trees and present a design for implementing
these queries on concurrent trees. We bring two algorithms implementing this
design, where one optimizes for tree update time, while the other optimizes for
aggregate query time. We analyze their correctness and complexity,
demonstrating the trade-offs between query time and update time.
