用C语言建立一个二叉树,并遍历
时间: 2024-03-22 21:41:41 浏览: 62
C语言二叉树的创建与遍历
好的,我可以帮你解答这个问题。下面是C语言建立二叉树并遍历的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
/* 二叉树结构体 */
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
/* 插入节点 */
TreeNode* insertNode(TreeNode *root, int val) {
if (root == NULL) {
TreeNode *newNode = (TreeNode*)malloc(sizeof(TreeNode));
newNode->val = val;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
if (val < root->val) {
root->left = insertNode(root->left, val);
} else {
root->right = insertNode(root->right, val);
}
return root;
}
/* 前序遍历 */
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 = NULL;
/* 插入节点 */
root = insertNode(root, 5);
root = insertNode(root, 3);
root = insertNode(root, 7);
root = insertNode(root, 2);
root = insertNode(root, 4);
root = insertNode(root, 6);
root = insertNode(root, 8);
/* 遍历 */
printf("前序遍历:");
preorderTraversal(root);
printf("\n");
printf("中序遍历:");
inorderTraversal(root);
printf("\n");
printf("后序遍历:");
postorderTraversal(root);
printf("\n");
return 0;
}
```
上述代码中,我们定义了一个二叉树结构体 `TreeNode`,其中包含节点的值 `val`、左子树指针 `left` 和右子树指针 `right`。我们通过 `insertNode` 函数向二叉树中插入节点,并通过三种不同的方式(前序遍历、中序遍历、后序遍历)遍历二叉树。
在 `main` 函数中,我们首先初始化一个空的二叉树 `root`,然后插入节点,并依次进行前序遍历、中序遍历、后序遍历。输出结果如下:
```
前序遍历:5 3 2 4 7 6 8
中序遍历:2 3 4 5 6 7 8
后序遍历:2 4 3 6 8 7 5
```
希望这个示例能帮助你理解如何使用C语言建立和遍历二叉树。
阅读全文