建立二叉树实现前序中序后序遍历c代码
时间: 2024-10-11 12:05:20 浏览: 36
二叉树的前、中、后算法
建立二叉树并实现前序、中序和后序遍历通常涉及递归算法。这里是一个简单的C语言示例,假设我们有一个`TreeNode`结构表示二叉树节点:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 前序遍历 (根 -> 左 -> 右)
void preorderTraversal(TreeNode* root) {
if (root != NULL) {
printf("%d ", root->val); // 访问根节点
preorderTraversal(root->left); // 遍历左子树
preorderTraversal(root->right); // 遍历右子树
}
}
// 中序遍历 (左 -> 根 -> 右)
void inorderTraversal(TreeNode* root) {
if (root != NULL) {
inorderTraversal(root->left); // 遍历左子树
printf("%d ", root->val); // 访问根节点
inorderTraversal(root->right); // 遍历右子树
}
}
// 后序遍历 (左 -> 右 -> 根)
void postorderTraversal(TreeNode* root) {
if (root != NULL) {
postorderTraversal(root->left); // 遍历左子树
postorderTraversal(root->right); // 遍历右子树
printf("%d ", root->val); // 访问根节点
}
}
// 创建二叉树的例子(插入节点)
TreeNode* insertNode(TreeNode* root, int val) {
if (root == NULL) {
root = (TreeNode*)malloc(sizeof(TreeNode));
root->val = val;
root->left = NULL;
root->right = NULL;
} else if (val < root->val) {
root->left = insertNode(root->left, val);
} else {
root->right = insertNode(root->right, val);
}
return root;
}
int main() {
// 创建一个简单的二叉搜索树,然后进行遍历演示
TreeNode* root = NULL;
root = insertNode(root, 50);
insertNode(root, 30);
insertNode(root, 20);
insertNode(root, 40);
insertNode(root, 70);
insertNode(root, 60);
insertNode(root, 80);
printf("前序遍历: ");
preorderTraversal(root);
printf("\n");
printf("中序遍历: ");
inorderTraversal(root);
printf("\n");
printf("后序遍历: ");
postorderTraversal(root);
printf("\n");
return 0;
}
```
阅读全文