コード例 #1
0
ファイル: Tree.C プロジェクト: Qilewuqiong/MIAMI
/** This method must be called before a pre-order traversal can be carried out in a new, or altered, graph.  The
    method recursively traverses the graph in pre-order and updates the nodes' next_preorder links. */
Tree::Node*
Tree::create_preorder_links (Tree::Node* n)
{
  Node* last;

  ChildNodesIterator iter(n);
  if (!(bool)iter) {
    n->next_preorder = 0;
    last = n;
  }
  else {
    last = n;
    do {
      last->next_preorder = (Node*)iter;
      last = create_preorder_links((Node*)iter);
      ++iter;
    } while ((bool)iter);
  }
  return last;
}
コード例 #2
0
ファイル: Tree.cpp プロジェクト: Vladimir84/rcc
/*! This method must be called before a pre-order traversal can be
    carried out in a new, or altered, graph.  The
    method recursively traverses the graph in pre-order and updates
    the nodes' next_preorder links. 
*/
OA_ptr<Tree::Node> 
Tree::create_preorder_links (OA_ptr<Tree::Node>  n)
{
  OA_ptr<Node>  last;

  ChildNodesIterator iter(*n);
  if (!iter.isValid()) {
    n->next_preorder = 0;
    last = n;
  }
  else {
    last = n;
    do {
      last->next_preorder = iter.current();
      last = create_preorder_links(iter.current());
      ++iter;
    } while (iter.isValid());
  }
  return last;
}