c语言实现二叉树链查找数据的代码
时间: 2023-12-02 07:04:03 浏览: 33
好的,以下是 c语言实现二叉树链查找数据的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树结点结构体
typedef struct TreeNode {
int data; // 结点数据
struct TreeNode* left; // 左子结点
struct TreeNode* right; // 右子结点
} TreeNode;
// 查找二叉树中是否存在指定数据
TreeNode* search(TreeNode* root, int data) {
if (root == NULL) {
return NULL; // 空树,没找到
}
if (data == root->data) {
return root; // 找到了,返回结点指针
} else if (data < root->data) {
return search(root->left, data); // 往左子树查找
} else {
return search(root->right, data); // 往右子树查找
}
}
// 插入数据到二叉树
void insert(TreeNode** rootPtr, int data) {
if (*rootPtr == NULL) {
// 空结点,新建一个结点
TreeNode* newNode = (TreeNode*) malloc(sizeof(TreeNode));
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
*rootPtr = newNode;
} else if (data < (*rootPtr)->data) {
// 插入到左子树
insert(&((*rootPtr)->left), data);
} else {
// 插入到右子树
insert(&((*rootPtr)->right), data);
}
}
// 初始化一个二叉搜索树
void initBST(TreeNode** rootPtr) {
*rootPtr = NULL;
}
int main() {
TreeNode* root;
initBST(&root); // 初始化一个空的二叉搜索树
// 插入一些数据
insert(&root, 8);
insert(&root, 3);
insert(&root, 10);
insert(&root, 1);
insert(&root, 6);
insert(&root, 14);
insert(&root, 4);
insert(&root, 7);
insert(&root, 13);
// 查找数据
TreeNode* node1 = search(root, 6);
TreeNode* node2 = search(root, 11);
if (node1 == NULL) {
printf("未找到数据\n");
} else {
printf("找到数据:%d\n", node1->data);
}
if (node2 == NULL) {
printf("未找到数据\n");
} else {
printf("找到数据:%d\n", node2->data);
}
return 0;
}
```
请问下一个问题是什么?