void PostorderTraversal(Node *root) {
	if (root != NULL) {
		PostorderTraversal(root->left);
		PostorderTraversal(root->right);
		if (root->val != 0) {
			printf("%d ", root->val);
		}
	}
}
Esempio n. 2
0
void Tree::PostorderTraversal(Node *node, TraversallCallBack f)
{
	if (node)
	{
		PostorderTraversal(node->Left, f);
		PostorderTraversal(node->Right, f);
		f(node);
	}
}
Esempio n. 3
0
void Tree::PostorderTraversal()
{
	if (!Root)
		cout << "Tree is empty" << endl;
	else
		PostorderTraversal(Root, PrintNodeFunc);
}
int main(int argc, char argv[]) {

	Node *root;

	int T;
	int N;

	scanf("%d ", &T);
	for (int test_case = 1; test_case <= T; test_case++) {
		scanf("%d ", &N);

		root = GetNode();
		MakeTree(root, N);

		printf("# Preorder\n");
		PreorderTraversal(root->left);
		putchar('\n');

		printf("# Inorder\n");
		InorderTraversal(root->left);
		putchar('\n');

		printf("# Postorder\n");
		PostorderTraversal(root->left);
		putchar('\n');

		if (root != NULL) {
			DeleteNode(root);
			//DeleteAllNode();
		}
	}

	return 0;
}
Esempio n. 5
0
Tree::~Tree()
{
	PostorderTraversal(Root, FreeNodeFunc);
}