// leftTree && rightTree && data void postTraverse(TreeNode* root){ if(!root){ return; } postTraverse(root->lc); postTraverse(root->rc); printf("%c",root->element); }
// test all the 4 traverses void testTraverse(TreeNode* root){ printf("Traverse data && leftTree && rightTree:\n"); preTraverse(root); printf("\nTraverse leftTree && data && rightTree:\n"); inTraverse(root); printf("\nTraverse leftTree && rightTree && data:\n"); postTraverse(root); printf("\nTraverse by level: \n"); levelTraverse(root); printf("\n"); }
void Node::traverse(RenderContext &ctx, const std::string& operation) { ctx._childMTime = TimeStamp(); bool traverseChildren = true; preTraverse(ctx, operation, traverseChildren); ctx.level++; if (traverseChildren) { for (auto &child : properties.children) child.second->traverse(ctx, operation); } ctx.level--; ctx._childMTime = childrenLastModified(); postTraverse(ctx, operation); }