Dynamic Stackless Binary Tree Traversal

Rasmus Barringer1, Tomas Akenine-Moller1,2
Lund University1, Intel Corporation2

A fundamental part of many computer algorithms involves traversing a binary tree. One notable example is traversing a space-partitioning acceleration structure when computing ray-traced images. Traditionally, the traversal requires a stack to be temporarily stored for each ray, which results in both additional storage and memorybandwidth usage. We present a novel algorithm for traversing a binary tree that does not require a stack and, unlike previous approaches, works with dynamic descent direction without restarting. Our algorithm will visit exactly the same sequence of nodes as a stack-based counterpart with extremely low computational overhead. No additional memory accesses are made for implicit binary trees. For sparse trees, parent links are used to backtrack the shortest path. We evaluate our algorithm using a ray tracer with a bounding volume hierarchy for which source code is supplied.

Read the preprint paper: Dynamic Stackless Binary Tree Traversal [PDF 1.25MB]

Source code Dynamic Stackless Binary Tree Traversal Code.zip [ZIP 1.41MB]

Citation: Rasmus Barringer, Tomas Akenine-Moller, Dynamic Stackless Binary Tree Traversal, Journal of Computer Graphics Techniques, vol. 2, no. 1, pp. 38-49, 2013.

For more complete information about compiler optimizations, see our Optimization Notice.