用C语言编写程序实现遍历排序二叉树并判断某节点是否存在,若不存在则输出汉字不存在
时间: 2024-02-28 11:53:48 浏览: 73
好的,以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构体
typedef struct Node {
int data;
struct Node* left;
struct Node* right;
} Node;
// 创建二叉树节点
Node* create_node(int data) {
Node* node = (Node*)malloc(sizeof(Node));
node->data = data;
node->left = NULL;
node->right = NULL;
return node;
}
// 向二叉树中插入节点
Node* insert_node(Node* root, int data) {
if (root == NULL) {
return create_node(data);
}
if (data < root->data) {
root->left = insert_node(root->left, data);
} else if (data > root->data) {
root->right = insert_node(root->right, data);
}
return root;
}
// 遍历二叉树并判断某节点是否存在
void traverse_and_search(Node* root, int data) {
if (root == NULL) {
printf("不存在\n");
return;
}
if (root->data == data) {
printf("存在\n");
return;
}
if (data < root->data) {
traverse_and_search(root->left, data);
} else {
traverse_and_search(root->right, data);
}
}
int main() {
// 创建一个排序二叉树
Node* root = NULL;
root = insert_node(root, 10);
root = insert_node(root, 6);
root = insert_node(root, 15);
root = insert_node(root, 3);
root = insert_node(root, 8);
root = insert_node(root, 12);
root = insert_node(root, 18);
// 遍历排序二叉树并判断某节点是否存在
traverse_and_search(root, 8);
traverse_and_search(root, 13);
traverse_and_search(root, 20);
return 0;
}
```
运行结果如下:
```
存在
不存在
不存在
```
注意:这里的遍历方法是采用了递归的方式,实际上还有其他遍历方式,比如迭代方式,可以根据实际情况选择不同的方式。
阅读全文