c语言二叉树的创建与遍历代码
时间: 2024-11-30 22:28:51 浏览: 2
在C语言中,我们可以使用结构体来创建二叉树并实现基本的遍历操作。这里是一个简单的示例,首先我们定义一个二叉树节点:
```c
typedef struct TreeNode {
int val; // 节点值
struct TreeNode *left; // 左子树指针
struct TreeNode *right; // 右子树指针
} TreeNode;
```
接下来,我们可以编写函数来创建二叉树(例如插入节点的简单版本):
```c
TreeNode* createNode(int value) {
TreeNode *newNode = (TreeNode*)malloc(sizeof(TreeNode));
newNode->val = value;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 插入节点函数,这里简化了对已有结构的理解
void insertIntoTree(TreeNode** root, int value) {
if (*root == NULL) {
*root = createNode(value);
} else if (value < (*root)->val) {
insertIntoTree(&(*root)->left, value);
} else {
insertIntoTree(&(*root)->right, value);
}
}
```
至于遍历,这里有几种常见的方法:
1. **前序遍历**: 先根节点,再左子树,最后右子树。
```c
void preOrderTraversal(TreeNode* node) {
if (node != NULL) {
printf("%d ", node->val); // 输出节点值
preOrderTraversal(node->left);
preOrderTraversal(node->right);
}
}
```
2. **中序遍历**: 先左子树,再根节点,最后右子树。
```c
void inOrderTraversal(TreeNode* node) {
if (node != NULL) {
inOrderTraversal(node->left);
printf("%d ", node->val); // 输出节点值
inOrderTraversal(node->right);
}
}
```
3. **后序遍历**: 先左子树,再右子树,最后根节点。
```c
void postOrderTraversal(TreeNode* node) {
if (node != NULL) {
postOrderTraversal(node->left);
postOrderTraversal(node->right);
printf("%d ", node->val); // 输出节点值
}
}
```
阅读全文