ArticleslgStudy

computer science

Range tree

Range tree is a computer science topic covered in the lgStudy science library. This page brings together a partial reference excerpt, illustrations, worked examples, real-world applications and a short study plan, so you can understand Range tree rather than just read about it. In short: In computer science, a range tree is an ordered tree data structure to hold a list of points. It allows all points within a given range to be reported efficiently, and is typically used in two or higher dimensions.

Range tree — main illustration
Range tree — illustration

Key takeaways

  • Range tree belongs to computer science; place it in that map before memorising details.
  • Learn the definition first, then one example that makes the definition concrete.
  • Connect Range tree to a quantity you can measure, compute or draw — that is where exam questions come from.
  • Reproduce the core statement of Range tree from memory before moving on to harder problems.

Reference excerpt

In computer science, a range tree is an ordered tree data structure to hold a list of points. It allows all points within a given range to be reported efficiently, and is typically used in two or higher dimensions. Range trees were introduced by Jon Louis Bentley in 1979. Similar data structures were discovered independently by Lueker, Lee and Wong, and Willard. The range tree is an alternative to the k-d tree. Compared to k-d trees, range trees offer faster query times of (in Big O notation) O ( log d ⁡ n + k ) {\displaystyle O(\log ^{d}n+k)} but worse storage of O ( n log d − 1 ⁡ n ) {\displaystyle O(n\log ^{d-1}n)} , where n is the number of points stored in the tree, d is the dimension of each point and k is the number of points reported by a given query. In 1990, Bernard Chazelle improved this to query time O ( log d − 1 ⁡ n + k ) {\displaystyle O(\log ^{d-1}n+k)} and space complexity O ( n ( log ⁡ n log ⁡ log ⁡ n ) d − 1 ) {\displaystyle O\left(n\left({\frac {\log n}{\log \log n}}\right)^{d-1}\right)} .

Data structure

A range tree on a set of 1-dimensional points is a balanced binary search tree on those points. The points stored in the tree are stored in the leaves of the tree; each internal node stores the largest value of its left subtree. A range tree on a set of points in d-dimensions is a recursively defined multi-level binary search tree. Each level of the data structure is a binary search tree on one of the d-dimensions. The first level is a binary search tree on the first of the d-coordinates. Each vertex v of this tree contains an associated structure that is a (d−1)-dimensional range tree on the last (d−1)-coordinates of the points stored in the subtree of v.

Operations

Construction A 1-dimensional range tree on a set of n points is a binary search tree, which can be constructed in O ( n log ⁡ n ) {\displaystyle O(n\log n)} time. Range trees in higher dimensions are constructed recursively by constructing a balanced binary search tree on the first coordinate of the points, and then, for each vertex v in this tree, constructing a (d−1)-dimensional range tree on the points contained in the subtree of v. Constructing a range tree this way would require O ( n log d ⁡ n ) {\displaystyle O(n\log ^{d}n)} time. This construction time can be improved for 2-dimensional range trees to O ( n log ⁡ n ) {\displaystyle O(n\log n)} . Let S be a set of n 2-dimensional points. If S contains only one point, return a leaf containing that point. Otherwise, construct the associated structure of S, a 1-dimensional range tree on the y-coordinates of the points in S. Let xm be the median x-coordinate of the points. Let SL be the set of points with x-coordinate less than or equal to xm and let SR be the set of points with x-coordinate greater than xm. Recursively construct vL, a 2-dimensional range tree on SL, and vR, a 2-dimensional range tree on SR. Create a vertex v with left-child vL and right-child vR. If we sort the points by their y-coordinates at the start of the algorithm, and maintain this ordering when splitting the points by their x-coordinate, we can construct the associated structures of each subtree in linear time. This reduces the time to construct a 2-dimensional range tree to O ( n log ⁡ n ) {\displaystyle O(n\log n)} , and also reduces the time to construct a d-dimensional range tree to O ( n log d − 1 ⁡ n ) {\displaystyle O(n\log ^{d-1}n)} .

Range queries

… excerpt ends here. Continue reading the full article.

Illustrations

Range tree: A 1-dimensional range query [x1, x2]. Points stored in the subtrees shaded in gray will be reported. find(x1) and find(x2) will be reported if they are inside the query interval.
A 1-dimensional range query [x1, x2]. Points stored in the subtrees shaded in gray will be reported. find(x1) and find(x2) will be reported if they are inside the query interval.

Worked examples

Example 1 — a first encounter with Range tree

Start with the simplest possible case. Write down what Range tree claims or describes in one sentence, then invent the smallest concrete situation in which that sentence is true. In computer science, the smallest case is usually a single object, a single equation or a single measurement. Check that every symbol or term in your sentence has a meaning in that case.

Example 2 — changing one variable

Take the situation from Example 1 and change exactly one quantity: double it, halve it, or set it to zero. Predict what should happen to Range tree before you calculate. Comparing your prediction with the result is the fastest way to find out whether you understand the idea or only the words.

Example 3 — an exam-style question

Typical questions about Range tree ask you to (a) state it precisely, (b) apply it to given data, and (c) explain a limitation. Practise writing all three answers in under five minutes; the third part is what separates a full-mark answer from an average one.

Applications of Range tree

In research
Range tree appears in computer science research whenever the underlying quantities have to be modelled precisely. Papers usually cite it as a starting assumption and then explore where it breaks down.
In technology and industry
Engineering practice reuses Range tree in design rules, simulations and safety margins. Knowing the idea lets you read a specification sheet and understand why the numbers look the way they do.
In the classroom
Range tree is common in secondary-school and first-year university syllabi. It links to neighbouring topics Geometric data structures, Trees (data structures), so understanding it makes those chapters shorter.
In everyday life
Look for Range tree outside the textbook — in sport, cooking, traffic, electronics or the sky above you. An example you found yourself is remembered far longer than one you were given.

Affiliate

Preply — study more efficiently by working with a personal tutor. 50% off.

How to study Range tree in 20 minutes

  1. Read the reference excerpt below once, without taking notes.
  2. Close the page and write down what Range tree means in your own words.
  3. Compare your version with the excerpt and mark what you missed.
  4. Work through the three examples above with pen and paper.
  5. Explain Range tree out loud to somebody else — or to Teacher Smith in the lgStudy chat.

Frequently asked questions

What is Range tree in simple terms?

In computer science, a range tree is an ordered tree data structure to hold a list of points. It allows all points within a given range to be reported efficiently, and is typically used in two or higher dimensions.

Why does Range tree matter?

Because it connects several computer science ideas at once: it gives you a definition you can apply, a quantity you can calculate, and a way to check whether a result is plausible.

How should I study Range tree?

Read the excerpt, restate it from memory, then work through the examples and applications listed on this page. The five-step study plan above takes about twenty minutes.

What does this page cover?

It gives you a compact reference excerpt plus original lgStudy explanations, examples, applications and study material on Range tree.

Tags

  • Geometric data structures
  • Trees (data structures)

Keep exploring