本文整理汇总了C++中TreeNode::GetNextPreorder方法的典型用法代码示例。如果您正苦于以下问题:C++ TreeNode::GetNextPreorder方法的具体用法?C++ TreeNode::GetNextPreorder怎么用?C++ TreeNode::GetNextPreorder使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TreeNode
的用法示例。
在下文中一共展示了TreeNode::GetNextPreorder方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: subroot
/*----------------------------------------------------------------------------------------------------------------------
| Selects an internal node at random from a discrete uniform distribution with the constraint that the returned node
| is not equal to the subroot (the sole child of the tip node serving as the root).
*/
TreeNode * LargetSimonMove::randomInternalAboveSubroot()
{
// Avoiding the "subroot" node (only child of the tip serving as the root), so the number of
// acceptable nodes is one fewer than the number of internal nodes
unsigned numAcceptableNodes = tree->GetNInternals() - 1;
unsigned ypos = rng->SampleUInt(numAcceptableNodes);
unsigned i = 0;
TreeNode * nd = tree->GetFirstPreorder();
for (; nd != NULL; nd = nd->GetNextPreorder())
{
if (nd->IsInternal() && !nd->GetParentConst()->IsTipRoot())
{
if (i == ypos)
break;
++i;
}
}
PHYCAS_ASSERT(nd->GetLeftChild() != NULL);
PHYCAS_ASSERT(nd->GetParentConst() != NULL);
PHYCAS_ASSERT(!nd->GetParent()->IsTipRoot());
return nd;
}
示例2: increment
/*----------------------------------------------------------------------------------------------------------------------
| Provides one of the core operations required for forward iterators.
*/
inline void preorder_iterator::increment()
{
nd = nd->GetNextPreorder();
}