void postorder_traverse (struct bst *bstroot)
{
if (bstroot !=NULL)
{
postorder_traverse (bstroot->lchild);
postorder_traverse (bstroot->rchild);
printf ("\n%c", bstroot->data);
}
}
Esempio n. 2
0
void postorder_traverse(node *t)
    {
    if (t != tail)
        {
        postorder_traverse(t->left);
        postorder_traverse(t->right);
        visit(t);
        }
    }
void postorder_traverse(tree_node *root) 
{//从根节点开始后序遍历
	//后序遍历的访问优先级是左子树>右子树>节点
	if(root == NULL)
		return;

	postorder_traverse(root->t_lc);
	postorder_traverse(root->t_rc);
	print_node(root);
}
void main ( )
{
clrscr ( );
create_bst (&root, 'A');
create_bst (&root, 'B');
create_bst (&root, 'a');
create_bst (&root, 'b');
create_bst (&root, 'C');
create_bst (&root, 'c');
create_bst (&root, 'D');
create_bst (&root, 'd');
create_bst (&root, 'E');
clrscr ( ) ;
printf ("\nTraversing bst into Inorder :\n");
inorder_traverse (root);
printf ("\nTraversing bst into Preorder :\n");
preorder_traverse (root);
printf ("\nTraversing bst into Postorder:\n");
postorder_traverse (root);
getch ( );
}
Esempio n. 5
0
void main(void)
    {
    char post[256];
    init_stack();
    init_queue();
    init_tree();
    while (1)
	{
	printf("\n\nInput Postfix expression -> ");
	gets(post);
	if (*post == NULL)
	    {
	    printf("\n Program ends...");
	    exit(0);
	    }
	if (!is_legal(post))
	    {
	    printf("\nExpression is not legal.");
	    continue;
	    }

	head->right = make_parse_tree(post);

        printf("\nPreorder   traverse -> ");
        preorder_traverse(head->right);

        printf("\nInorder    traverse -> ");
        inorder_traverse(head->right);

        printf("\nPostorder  traverse -> ");
        postorder_traverse(head->right);

        printf("\nLevelorder traverse -> ");
        levelorder_traverse(head->right);
	}
    }