先序遍历:1 2 3 4 6 5
中序遍历:2 1 6 4 3 5
后序遍历:2 6 4 5 3 1
#include <stdio.h>
#include <stdlib.h>//定义二叉树结构体
typedef struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;
} TreeNode;//根据先序序列建立二叉树
void createBiTree(TreeNode** T) {int c;scanf("%d", &c);if (c == 0)*T = NULL;else {*T = (TreeNode*)malloc(sizeof(TreeNode));if (!T)exit(-1);(*T)->val = c;createBiTree(&(*T)->left);createBiTree(&(*T)->right);}
}//先序遍历
void preorderTraversal(TreeNode* root) {if (root == NULL) {return;}printf("%d ", root->val);preorderTraversal(root->left);preorderTraversal(root->right);
}//中序遍历
void inorderTraversal(TreeNode* root) {if (root == NULL) {return;}inorderTraversal(root->left);printf("%d ", root->val);inorderTraversal(root->right);
}//后序遍历
void postorderTraversal(TreeNode* root) {if (root == NULL) {return;}postorderTraversal(root->left);postorderTraversal(root->right);printf("%d ", root->val);
}int main() { TreeNode* root;createBiTree(&root);printf("先序遍历:");preorderTraversal(root);printf("\n中序遍历:");inorderTraversal(root);printf("\n后序遍历:");postorderTraversal(root);return 0;
}
//1 2 0 0 3 4 6 0 0 0 5 0 0