1. 递归实现二叉树的建立及前中后序遍历 c #include <stdio.h> #include <stdlib.h> struct node { int data; struct node * left, *right; }; //递归建立二叉树 struct node * create_bintree() { char ch; struct node * new_node = NULL; scanf("%c",&ch); if(ch == '#') { return NULL; } new_node = (struct node*)malloc(sizeof(struct node)); if (new_node == NULL) { printf("malloc error!/n"); return NULL; } new_node->data = ch; new_node->left = create_bintree(); new_node->right = create_bintree(); return new_node; } //前序遍历 void preorder_traverse(struct node * root) { if (root == NULL) return ; printf("%c",root->data); preorder_traverse(root->left); preorder_traverse(root->right); return ; } //中序遍历 void inoder_traverse(struct node * root) { if (root == NULL) return ; inoder_traverse(root->left); printf("%c",root->data); inoder_traverse(root->right); return ; } //后序遍历 void postoder_traverse(struct node * root) { if (root == NULL) return ; postoder_traverse(root->left); postoder_traverse(root->right); printf("%c",root->data); return ; } int main(int argc, char* argv[]) { struct node * root = NULL; root = create_bintree(); preorder_traverse(root); printf("/n"); inoder_traverse(root); printf("/n"); postoder_traverse(root); printf("/n"); return 0; }