Esempio n. 1
0
// data && leftTree && rightTree
void preTraverse(TreeNode* root){
    if(!root){
        return;
    }
    printf("%c",root->element);
    preTraverse(root->lc);
    preTraverse(root->rc);
}
Esempio n. 2
0
/**
 * 前序遍历二叉树
 */
void preTraverse(btree *t)
{
	if (t) {
		printf("%c ", t->data);
		preTraverse(t->lchild);
		preTraverse(t->rchild);
	}
}
Esempio n. 3
0
int main(void)
{
	int i;
	char *post, *order;
	btree *t;

	while (scanf("%d", &n) != EOF) {
		post = (char *)malloc(n);
		order = (char *)malloc(n);
		
		getchar();
		for (i = 0; i < n; i ++)
			scanf("%c", order + i);

		getchar();
		for (i = 0; i < n; i ++)
			scanf("%c", post + i);

		t = rebuildTree(order, post, n);

		preTraverse(t);
		printf("\n");

		free(post);
		free(order);

	}

	return 0;
}
Esempio n. 4
0
// 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");
}
Esempio n. 5
0
    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);
    }