本文整理汇总了C++中NodeTree::getRoot方法的典型用法代码示例。如果您正苦于以下问题:C++ NodeTree::getRoot方法的具体用法?C++ NodeTree::getRoot怎么用?C++ NodeTree::getRoot使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NodeTree
的用法示例。
在下文中一共展示了NodeTree::getRoot方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: applyToEachNodePO
void applyToEachNodePO(NodeTree& nt, const NodeAction& action) {
/// PO-traversal requires two stacks
std::stack<VisualNode*> stk_1;
std::stack<VisualNode*> stk_2;
auto* root = nt.getRoot();
auto& na = nt.getNA();
stk_1.push(root);
while (stk_1.size() > 0) {
auto* node = stk_1.top(); stk_1.pop();
stk_2.push(node);
for (auto i = 0u; i < node->getNumberOfChildren(); ++i) {
auto kid = node->getChild(na, i);
stk_1.push(kid);
}
}
while (stk_2.size() > 0) {
auto* node = stk_2.top(); stk_2.pop();
action(node);
}
}
示例2: highlightSubtrees
void highlightSubtrees(NodeTree& nt, const std::vector<VisualNode*>& nodes) {
QMutexLocker lock(&nt.getMutex());
auto& na = nt.getNA();
auto* root = nt.getRoot();
root->unhideAll(na);
{
QMutexLocker lock(&nt.getLayoutMutex());
root->layout(na);
}
// unhighlight all
applyToEachNode(nt, [](VisualNode* n) {
n->setHighlighted(false);
});
for (auto node : nodes) {
node->setHighlighted(true);
}
// TODO: hide not highlighted
// HideNotHighlightedCursor hnhc(root, na);
// PostorderNodeVisitor<HideNotHighlightedCursor>(hnhc).run();
nt.treeModified();
}
示例3: calculateMaxDepth
int calculateMaxDepth(const NodeTree& nt) {
const auto& na = nt.getNA();
const auto* root = nt.getRoot();
return calcDepth(na, root);
}
示例4: gatherNodeStats
Statistics gatherNodeStats(NodeTree& nt) {
Statistics stats;
auto* root = nt.getRoot();
applyToEachNode(nt, root, [&stats](VisualNode* n) {
switch (n->getStatus()) {
case SOLVED:
stats.solutions += 1; break;
case FAILED:
stats.failures += 1; break;
case BRANCH:
stats.choices += 1; break;
case UNDETERMINED:
stats.undetermined += 1; break;
default:
break;
}
});
stats.maxDepth = calculateMaxDepth(nt);
return stats;
}