#include #include typedef struct Node node; struct Node { int id; struct Node *left; struct Node *right; }; node *new(int id) { node *n = malloc(sizeof(node)); n->left = n->right = NULL; n->id = id; return n; } void preorder(node *n) { if (!n) return; printf("%d ", n->id); preorder(n->left); preorder(n->right); } void postorder(node *n) { if (!n) return; postorder(n->left); postorder(n->right); printf("%d ", n->id); } void inorder(node *n) { if (!n) return; inorder(n->left); printf("%d ", n->id); inorder(n->right); } void free_tree(node *n) { if(!n) return; free_tree(n->left); free_tree(n->right); free(n); } int main() { node *root = new(1); root->left = new(4); root->right = new(6); root->left->left = new(2); root->left->right = new(1783); root->left->right->left = new(100); printf("Preorder: "); preorder(root); printf("\n"); printf("Postorder: "); postorder(root); printf("\n"); printf("Inorder: "); inorder(root); free_tree(root); }