假设你有一个像这个或这个这样的通用 k-ary 树
在这里重复后者:
template <typename T>
struct TreeNode
{
T* DATA ; // data of type T to be stored at this TreeNode
vector< TreeNode<T>* > children ;
void insert( T* newData ) ;
// runs f on this and all children of this
void preorder( function<void (T*)> f )
{
f( this->DATA ) ; // exec f on this
for( int i = 0 ; i < children.size(); i++ )
children[i]->preorder( f ) ; // exec f on each child
}
} ;
template <typename T>
struct Tree
{
TreeNode<T>* root;
// TREE LEVEL functions
void clear() { delete root ; root=0; }
void insert( T* data ) { if(root)root->insert(data); }
} ;
现在通常,您将前序和后序遍历作为递归成员函数,TreeNode
如上所示。 但是假设您不想传递函数,您想从类外部访问树中的每个节点(即只给定一个Tree
对象)。
你怎么能这样做?