搜索二叉树之字典实现
发表于:2025-12-05 作者:千家信息网编辑
千家信息网最后更新 2025年12月05日,利用搜索二叉树判断一个单词是否拼写正确:假设把所有单词都按照搜索树的性质插入到搜索二叉树中,我们判断一个单词拼写是否正确就是在树中查找该单词是否存在(查找key是否存在)。/*************
千家信息网最后更新 2025年12月05日搜索二叉树之字典实现
利用搜索二叉树判断一个单词是否拼写正确:
假设把所有单词都按照搜索树的性质插入到搜索二叉树中,我们判断一个单词拼写是否正确就是在树中查找该单词是否存在(查找key是否存在)。
/******************************************Date:2018年3月26日14:42:54*Author: Meng*WebSite:msyci.com*QQ:3515955122*****************************************/# include# include # include #include typedef char* KeyType;typedef char* ValueType;typedef struct BSTreeNode{ struct BSTreeNode* _left; struct BSTreeNode* _right; KeyType _key; ValueType _value;}BSTreeNode;BSTreeNode *BuyTreeNode(KeyType x,ValueType value ) //创建节点{ BSTreeNode *node = (BSTreeNode*)malloc(sizeof(BSTreeNode)); assert(node); node->_key = x; node->_left = NULL; node->_right = NULL; node->_value = value; return node;}//插入、查找函数int BSTreeNodeInsertR(BSTreeNode **tree,KeyType key, ValueType value) //搜索树的插入{ int tmp = 0; if(*tree == NULL) { *tree = BuyTreeNode(key,value); return 0; } tmp = strcmp((*tree)->_key,key); if (tmp>0) return BSTreeNodeInsertR(&(*tree)->_left,key,value); else if (tmp<0) return BSTreeNodeInsertR(&(*tree)->_right,key,value); else return -1;}BSTreeNode* BSTreeNodeFindR(BSTreeNode* tree, KeyType key) //查找{ int tmp = 0; if(!tree) { return NULL; } tmp = strcmp(tree->_key, key); if(tmp > 0) { return BSTreeNodeFindR(tree->_left, key); } else if (tmp < 0) { return BSTreeNodeFindR(tree->_right, key); } else { return tree; }}void TestApplication(){ BSTreeNode *tree = NULL; BSTreeNodeInsertR(&tree,"China","中国"); BSTreeNodeInsertR(&tree,"score","成绩"); BSTreeNodeInsertR(&tree,"char","字符"); BSTreeNodeInsertR(&tree,"int","×××"); BSTreeNodeInsertR(&tree,"float","浮点型"); printf("%s \n", BSTreeNodeFindR(tree,"char")->_value); printf("%s \n", BSTreeNodeFindR(tree,"int")->_value); printf("%s \n", BSTreeNodeFindR(tree,"float")->_value); printf("%s \n", BSTreeNodeFindR(tree,"China")->_value); printf("%s \n", BSTreeNodeFindR(tree,"score")->_value); printf("%p \n", BSTreeNodeFindR(tree,"double")); }int main(void){ TestApplication(); char c = getchar(); return 0;}
运行结果:

实现简单的中英文字典
/******************************************Date:2018年3月26日15:35:07*Author: Meng*WebSite:msyci.com*QQ:3515955122*****************************************/# include# include # include #include typedef char* KeyType;typedef char* ValueType;typedef struct BSTreeNode{ struct BSTreeNode* _left; struct BSTreeNode* _right; KeyType _key; ValueType _value;}BSTreeNode;BSTreeNode *BuyTreeNode(KeyType x,ValueType value ) //创建节点{ BSTreeNode *node = (BSTreeNode*)malloc(sizeof(BSTreeNode)); assert(node); node->_key = x; node->_left = NULL; node->_right = NULL; node->_value = value; return node;}//插入、查找函数int BSTreeNodeInsertR(BSTreeNode **tree,KeyType key, ValueType value) //搜索树的插入{ int tmp = 0; if(*tree == NULL) { *tree = BuyTreeNode(key,value); return 0; } tmp = strcmp((*tree)->_key,key); if (tmp>0) return BSTreeNodeInsertR(&(*tree)->_left,key,value); else if (tmp<0) return BSTreeNodeInsertR(&(*tree)->_right,key,value); else return -1;}BSTreeNode* BSTreeNodeFindR(BSTreeNode* tree, KeyType key) //查找{ int tmp = 0; if(!tree) { return NULL; } tmp = strcmp(tree->_key, key); if(tmp > 0) { return BSTreeNodeFindR(tree->_left, key); } else if (tmp < 0) { return BSTreeNodeFindR(tree->_right, key); } else { return tree; }}void TestApplication(){ BSTreeNode *tree = NULL; BSTreeNodeInsertR(&tree,"China","中国"); BSTreeNodeInsertR(&tree,"score","成绩"); BSTreeNodeInsertR(&tree,"char","字符"); BSTreeNodeInsertR(&tree,"int","×××"); BSTreeNodeInsertR(&tree,"float","浮点型"); printf("%s \n", BSTreeNodeFindR(tree,"char")->_value); printf("%s \n", BSTreeNodeFindR(tree,"int")->_value); printf("%s \n", BSTreeNodeFindR(tree,"float")->_value); printf("%s \n", BSTreeNodeFindR(tree,"China")->_value); printf("%s \n", BSTreeNodeFindR(tree,"score")->_value); printf("%p \n", BSTreeNodeFindR(tree,"double")); }int main(void){ TestApplication(); char c = getchar(); return 0;}
运行结果:

搜索
单词
函数
字符
成绩
浮点
结果
节点
中国
运行
字典
中英
就是
性质
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
国产服务器上市概念股
sql 数据库错误53
数据库查询不到文件
数据库技术的主要理论基础
电力网络安全生产大区分为什么
如何配置域服务器
淄博服务器招人
网络安全学院有哪些专业
dht服务器
c 和2008数据库连接
数据库的安全性的管理
小系统的数据库
数据库图片怎么储存
服务器 性能指标
美云服务器
每日一淘软件开发价格
电脑微信数据库查看工具
网络安全pin码
高级数据库技术自考教材
p2p网络技术公司
积木式软件开发平台
不需要安装的数据库
科技金融 互联网大会
渭南市网络安全知识大赛
校园网网络安全体系结构设计
数据库适合什么行业
广东crm软件开发外包
服务器安全狗恢复设置
广州环境监测软件开发方案
在软件开发公司当推广累吗