用c语言写一个二叉树游戏
时间: 2024-05-14 20:16:22 浏览: 46
好的,下面是一个简单的二叉树游戏,玩家需要猜测一个数字,程序通过二叉树的分支来提示玩家该猜测的数字是大于还是小于当前数字。
```c
#include <stdio.h>
#include <stdlib.h>
struct node {
int data;
struct node* left;
struct node* right;
};
struct node* create_node(int data) {
struct node* new_node = (struct node*)malloc(sizeof(struct node));
new_node->data = data;
new_node->left = NULL;
new_node->right = NULL;
return new_node;
}
struct node* insert(struct node* node, int data) {
if (node == NULL) {
return create_node(data);
}
if (data < node->data) {
node->left = insert(node->left, data);
} else if (data > node->data) {
node->right = insert(node->right, data);
}
return node;
}
void play_game(struct node* node) {
int guess;
printf("请猜测一个数字:");
scanf("%d", &guess);
if (guess == node->data) {
printf("恭喜你,猜对了!\n");
return;
} else if (guess < node->data && node->left != NULL) {
printf("你猜的数字比 %d 小\n", node->data);
play_game(node->left);
} else if (guess > node->data && node->right != NULL) {
printf("你猜的数字比 %d 大\n", node->data);
play_game(node->right);
} else {
printf("猜错了!\n");
return;
}
}
int main() {
struct node* root = NULL;
root = insert(root, 50);
insert(root, 30);
insert(root, 20);
insert(root, 40);
insert(root, 70);
insert(root, 60);
insert(root, 80);
play_game(root);
return 0;
}
```
在这个游戏中,我们首先创建一个二叉树,并将数字插入到树中。然后玩家可以开始猜测数字,程序会根据猜测的数字和当前节点的值来提示玩家下一步应该猜测的数字是大于还是小于当前节点的值。如果玩家猜中了数字,游戏结束,否则程序会一直提示玩家猜测,直到猜中为止。
阅读全文