用c语言编写代码实现二叉树的生成,插入,查找
时间: 2024-02-22 21:00:07 浏览: 74
用C语言实现的二叉树
下面是 C 语言实现二叉树的生成、插入和查找的代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树节点结构体
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
// 创建一个新的二叉树节点
struct TreeNode *createTreeNode(int val) {
struct TreeNode *node = (struct TreeNode *)malloc(sizeof(struct TreeNode));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
// 向二叉树中插入一个新的节点
void insertNode(struct TreeNode **root, int val) {
if (*root == NULL) {
*root = createTreeNode(val);
} else if (val < (*root)->val) {
insertNode(&((*root)->left), val);
} else {
insertNode(&((*root)->right), val);
}
}
// 在二叉树中查找节点 val
struct TreeNode *findNode(struct TreeNode *root, int val) {
if (root == NULL || root->val == val) {
return root;
}
if (val < root->val) {
return findNode(root->left, val);
} else {
return findNode(root->right, val);
}
}
int main() {
struct TreeNode *root = NULL;
insertNode(&root, 5);
insertNode(&root, 3);
insertNode(&root, 7);
insertNode(&root, 1);
insertNode(&root, 9);
struct TreeNode *node = findNode(root, 7);
if (node != NULL) {
printf("节点 7 存在于二叉树中。\n");
} else {
printf("节点 7 不存在于二叉树中。\n");
}
node = findNode(root, 4);
if (node != NULL) {
printf("节点 4 存在于二叉树中。\n");
} else {
printf("节点 4 不存在于二叉树中。\n");
}
return 0;
}
```
以上代码实现了二叉树的生成、插入和查找操作,并且提供了创建节点的函数。在 main 函数中,我们创建了一个二叉树,插入了几个节点,然后进行了两次查找操作,并输出查找结果。注意到在插入节点的函数中,我们使用了指向指针的指针来对二叉树进行修改,这是因为如果直接使用指针,则在函数内部修改指针的值不会影响到函数外部的指针值。
阅读全文