DepthComparison Node1 DepthComparison + DepthComparison() + operator()() Node2 Tree + Tree() + parent() + siblings() + size() + leaves() + is_leaf() + is_simple() + firstGeneration() + cbegin() + cend() + depth() Node2->Node1 -m_tree Node3 std::vector< std::size_t > + elements Node3->Node2 -m_leaves -m_firstGeneration -m_parents Node4 std::vector< std::vector < std::size_t > > Node3->Node4 +elements Node4->Node2 -m_children