使用c语言编写一个程序,实现二叉树的基本运算,
时间: 2024-12-21 14:24:05 浏览: 29
在C语言中,我们可以使用结构体来表示二叉树节点,并提供基本的操作如插入、查找和删除。下面是一个简单的二叉搜索树(Binary Search Tree,BST)的例子,包含了基本的插入和查找操作:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 创建新节点
TreeNode* createNode(int val) {
TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
if (newNode != NULL) {
newNode->val = val;
newNode->left = newNode->right = NULL;
}
return newNode;
}
// 插入节点到BST
TreeNode* insert(TreeNode* root, int val) {
if (root == NULL) {
return createNode(val);
}
// 如果值小于当前节点,向左遍历;反之向右遍历
if (val < root->val)
root->left = insert(root->left, val);
else if (val > root->val)
root->right = insert(root->right, val);
return root;
}
// 查找函数(这里仅示例简单查找,实际应用可能需要递归)
int find(TreeNode* root, int val) {
if (root == NULL || root->val == val)
return root ? 1 : 0; // 1 表示找到,0 表示未找到
if (val < root->val)
return find(root->left, val);
else
return find(root->right, val);
}
// 示例演示
int main() {
TreeNode* root = NULL;
root = insert(root, 50); // 插入根节点50
insert(root, 30);
insert(root, 70);
insert(root, 20);
insert(root, 40);
insert(root, 60);
int searchResult = find(root, 40); // 检查是否找到值40
if (searchResult)
printf("找到了值40\n");
else
printf("没找到值40\n");
return 0;
}
阅读全文