搜索二叉树之字典实现
发表于:2024-09-21 作者:千家信息网编辑
千家信息网最后更新 2024年09月21日,利用搜索二叉树判断一个单词是否拼写正确:假设把所有单词都按照搜索树的性质插入到搜索二叉树中,我们判断一个单词拼写是否正确就是在树中查找该单词是否存在(查找key是否存在)。/*************
千家信息网最后更新 2024年09月21日搜索二叉树之字典实现
利用搜索二叉树判断一个单词是否拼写正确:
假设把所有单词都按照搜索树的性质插入到搜索二叉树中,我们判断一个单词拼写是否正确就是在树中查找该单词是否存在(查找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安全错误
数据库的锁怎样保障安全
上海律众网络技术有限公司
我的世界自由度很高的服务器
坦克世界为啥不升级服务器
网络安全小语段
天津市网络安全宣传周
php读取数据库用户id
软件开发者信息
沙利文数据库在哪儿
lpv9服务器
本地服务器磁盘阵列
教学工作中如何落实网络安全
网络安全监察部门作用
什么是分布式数据库ppt
紫光恒越服务器400
湛江服务软件开发定制
大学网络安全主体责任
移动办公m3服务器超载
软件开发复用度
集团公司网络安全工作责任制
平顶山职业技术学院网络技术
计算机网络技术城市轨道应用
虹口区高科技软件开发推荐厂家
服务器双c套件
服务器延时查询
公安局网络安全自查报告
Gilabci导致服务器错误
能整篇论文查找的中文数据库
传奇4区亚服服务器名称
仙剑奇侠传四用什么软件开发的
带显卡的服务器是干嘛用的