void postorder_traverse (struct bst *bstroot) { if (bstroot !=NULL) { postorder_traverse (bstroot->lchild); postorder_traverse (bstroot->rchild); printf ("\n%c", bstroot->data); } }
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 ( ); }
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); } }