/*二话不说 上代码 小白一看就懂
题目 纸牌游戏 ,题目要求:
■一副没有花牌(J、Q、K、A、大小王)的扑克牌,两个人进行纸牌游戏,其中一个人为用户,另一个人为计算机;
■ 每轮每人各发5张牌,各自以这5张牌建立二叉排序树;
■ 由用户先出,轮流出牌,每次只能出一张并且要比别人出的大,如:用户出3,计算机则要出比3大的牌,没有则选择不出;
■ 最先出完的人获胜。
我做了8个功能,分别是什么:
1.新建结点
2.插入结点
3. 查找最小结点
4. 删除结点
5.找到右子树中的最小结
6.中序遍历二叉排序树电脑出牌
7.生成随机数
8.主函数
运行
程序设计的思路;按要求发牌并排序 → 先出牌 → 打牌 → 结束 由用户先出,轮流出牌,每次只能出一张并且要比别人出的大,计算机则要出比用户大的牌,没有则选择不出;先出完牌的一方获胜
简单介绍每个函数的功能,从主函数开始介绍整个程序的运行流程。重点讲二叉树*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 二叉排序树结点结构体
typedef struct bst_node {
int val;//结点 O
struct bst_node *left;// / \ */
struct bst_node *right;// l R
} BSTNode;//结点名
// 新建结点1
BSTNode* new_node(int val) {
BSTNode* node = (BSTNode*)malloc(sizeof(BSTNode));//分配内存
node->val = val;
node->left = node->right = NULL;
return node;
}
// 插入结点2
BSTNode* insert(BSTNode* root, int val) {
if (root == NULL) {
return new_node(val);
}
if (val < root->val) {
root->left = insert(root->left, val);
} else if (val > root->val) {
root->right = insert(root->right, val);
}