Main MRPT website > C++ reference for MRPT 1.3.2
List of all members | Classes | Public Types
mrpt::graphs::CDirectedTree< TYPE_EDGES > Class Template Reference

Detailed Description

template<class TYPE_EDGES = uint8_t>
class mrpt::graphs::CDirectedTree< TYPE_EDGES >

< Make available this typedef in this namespace too

A special kind of graph in the form of a tree with directed edges and optional edge annotations of templatized type "TYPE_EDGES". The tree is represented by means of:

Note that nodes are not explicitly listed anywhere: their existence is only inferred from their ID numbers in the list of edges in the edges_to_children data structure. If you want to include information for each node, derive from this class and create a separte container for that data.

This class is less general than CDirectedGraph but more efficient to traverse (see visitDepthFirst and visitBreadthFirst).

If annotations in edges are not required, you can leave TYPE_EDGES to its default type "uint8_t".

Example of insertion of a new edge:

typedef CDirectedTree<edge_t> my_tree_t;
my_tree_t tree;
TNodeID id_root = XXX;
TNodeID id_child = XXX;
my_tree_t::TListEdges & edges_of_root = tree.edges_to_children[id_root];
edges_of_root.push_back( my_tree_t::TEdgeInfo(id_child,false, edge_t(...) ) );
See also
CDirectedGraph, CDijkstra, mrpt::graphs::CNetworkOfPoses

Definition at line 51 of file CDirectedTree.h.

#include <mrpt/graphs/CDirectedTree.h>

Inheritance diagram for mrpt::graphs::CDirectedTree< TYPE_EDGES >:
Inheritance graph

Classes

struct  TEdgeInfo
 
struct  Visitor
 Virtual base class for user-defined visitors. More...
 

Public Types

typedef std::list< TEdgeInfoTListEdges
 
typedef std::map< TNodeID, TListEdgesTMapNode2ListEdges
 

Public Member Functions

Utilities
void clear ()
 Empty all edge data and set "root" to INVALID_NODEID. More...
 
void visitDepthFirst (const TNodeID root, Visitor &user_visitor, const size_t root_depth_level=0) const
 Depth-first visit of all children nodes of a given root (itself excluded from the visit), invoking a user-provided function for each node/edge. More...
 
void visitBreadthFirst (const TNodeID root, Visitor &user_visitor, const size_t root_depth_level=0) const
 Breadth-first visit of all children nodes of a given root (itself excluded from the visit), invoking a user-provided function for each node/edge. More...
 
std::string getAsTextDescription () const
 Return a text representation of the tree spanned in a depth-first view, as in this example: More...
 

Public Attributes

Data
TNodeID root
 The root of the tree. More...
 
TMapNode2ListEdges edges_to_children
 The edges of each node. More...
 

Member Typedef Documentation

template<class TYPE_EDGES = uint8_t>
typedef std::list<TEdgeInfo> mrpt::graphs::CDirectedTree< TYPE_EDGES >::TListEdges

Definition at line 64 of file CDirectedTree.h.

template<class TYPE_EDGES = uint8_t>
typedef std::map<TNodeID,TListEdges> mrpt::graphs::CDirectedTree< TYPE_EDGES >::TMapNode2ListEdges

Definition at line 65 of file CDirectedTree.h.

Member Function Documentation

template<class TYPE_EDGES = uint8_t>
void mrpt::graphs::CDirectedTree< TYPE_EDGES >::clear ( void  )
inline

Empty all edge data and set "root" to INVALID_NODEID.

Definition at line 77 of file CDirectedTree.h.

Referenced by mrpt::graphs::CDijkstra< TYPE_GRAPH, MAPS_IMPLEMENTATION >::getTreeGraph().

template<class TYPE_EDGES = uint8_t>
std::string mrpt::graphs::CDirectedTree< TYPE_EDGES >::getAsTextDescription ( ) const
inline

Return a text representation of the tree spanned in a depth-first view, as in this example:

0
-> 1
-> 2
-> 4
-> 5
-> 3

Definition at line 130 of file CDirectedTree.h.

template<class TYPE_EDGES = uint8_t>
void mrpt::graphs::CDirectedTree< TYPE_EDGES >::visitBreadthFirst ( const TNodeID  root,
Visitor user_visitor,
const size_t  root_depth_level = 0 
) const
inline

Breadth-first visit of all children nodes of a given root (itself excluded from the visit), invoking a user-provided function for each node/edge.

See also
visitDepthFirst

Definition at line 108 of file CDirectedTree.h.

template<class TYPE_EDGES = uint8_t>
void mrpt::graphs::CDirectedTree< TYPE_EDGES >::visitDepthFirst ( const TNodeID  root,
Visitor user_visitor,
const size_t  root_depth_level = 0 
) const
inline

Depth-first visit of all children nodes of a given root (itself excluded from the visit), invoking a user-provided function for each node/edge.

See also
visitBreadthFirst

Definition at line 94 of file CDirectedTree.h.

Referenced by mrpt::graphs::CDirectedTree< TMoveEdgeSE2_TP >::getAsTextDescription(), mrpt::graphs::CDirectedTree< TMoveEdgeSE2_TP >::visitBreadthFirst(), and mrpt::graphs::CDirectedTree< TMoveEdgeSE2_TP >::visitDepthFirst().

Member Data Documentation

template<class TYPE_EDGES = uint8_t>
TMapNode2ListEdges mrpt::graphs::CDirectedTree< TYPE_EDGES >::edges_to_children

The edges of each node.

Definition at line 70 of file CDirectedTree.h.

Referenced by mrpt::graphs::CDijkstra< TYPE_GRAPH, MAPS_IMPLEMENTATION >::getTreeGraph().

template<class TYPE_EDGES = uint8_t>
TNodeID mrpt::graphs::CDirectedTree< TYPE_EDGES >::root

The root of the tree.

Definition at line 69 of file CDirectedTree.h.

Referenced by mrpt::graphs::CDijkstra< TYPE_GRAPH, MAPS_IMPLEMENTATION >::getTreeGraph().




Page generated by Doxygen 1.8.9.1 for MRPT 1.3.2 SVN:Unversioned directory at Thu Dec 10 00:07:55 UTC 2015