traversal_order.hpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2024-2025, NVIDIA CORPORATION.
3  * SPDX-License-Identifier: Apache-2.0
4  */
5 #pragma once
6 
7 namespace ML {
8 namespace forest {
9 
10 /* A class used to specify the order in which nodes of a forest should be
11  * traversed
12  *
13  * Because the meaning of "left" and "right" vary by convention, we refer to the two children of a
14  * node as "hot" or "distant" rather than left or right. The "hot" child is the one which is
15  * traversed soonest after the parent, and the "distant" child is traversed latest.
16  */
17 enum class forest_order : unsigned char {
18  // Traverse forest by proceeding depth-first through each tree
19  // consecutively
20  depth_first = 0,
21  // Traverse forest by proceeding breadth-first through each tree
22  // consecutively
23  breadth_first = 1,
24  // Traverse forest by proceeding through the root nodes of each tree first,
25  // followed by the hot and distant children of those root nodes for each tree,
26  // and so forth. This traversal order ensures that all nodes of a
27  // particular tree at a particular depth are traversed together.
29  // Traverse forest by proceeding through the root nodes of each tree first,
30  // followed by all of the hot children of those root nodes, then all of
31  // the distant children of those root nodes, and so forth. This
32  // traversal order ensures that all hot children at a particular depth
33  // are traversed together, followed by all distant children.
35 };
36 
37 } // namespace forest
38 } // namespace ML
forest_order
Definition: traversal_order.hpp:17
Definition: dbscan.hpp:18