要求编写c加加程序,实现树的基本功能(至少包含七个功能函数以及先序、中序、后序三种遍历算法,并能够程序演示)
时间: 2024-12-11 12:24:35 浏览: 33
在C语言中编写一个基本的二叉树程序,你需要定义一个二叉树结构体,包括节点数据和左右子节点指针。这里是一个简单的示例,包含了创建树、插入节点、删除节点、先序、中序和后序遍历等七种核心功能:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点
typedef struct TreeNode {
int data;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 创建新节点
TreeNode* createNode(int value) {
TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
if (!newNode) {
printf("Memory allocation failed.\n");
return NULL;
}
newNode->data = value;
newNode->left = newNode->right = NULL;
return newNode;
}
// 插入节点
TreeNode* insertNode(TreeNode* root, int value) {
if (root == NULL) {
root = createNode(value);
} else if (value < root->data) {
root->left = insertNode(root->left, value);
} else {
root->right = insertNode(root->right, value);
}
return root;
}
// 先序遍历
void preOrderTraversal(TreeNode* root) {
if (root != NULL) {
printf("%d ", root->data); // 先访问根
preOrderTraversal(root->left);
preOrderTraversal(root->right);
}
}
// 中序遍历
void inOrderTraversal(TreeNode* root) {
if (root != NULL) {
inOrderTraversal(root->left);
printf("%d ", root->data); // 中间访问根
inOrderTraversal(root->right);
}
}
// 后序遍历
void postOrderTraversal(TreeNode* root) {
if (root != NULL) {
postOrderTraversal(root->left);
postOrderTraversal(root->right);
printf("%d ", root->data); // 最后访问根
}
}
// 主函数,演示操作
int main() {
TreeNode* root = NULL;
// ... 这里可以添加创建树的代码,比如先插入几个节点
// 遍历树
printf("Preorder traversal: ");
preOrderTraversal(root);
printf("\nInorder traversal: ");
inOrderTraversal(root);
printf("\nPostorder traversal: ");
postOrderTraversal(root);
return 0;
}
```
阅读全文
相关推荐


















