(三叉字典树)二叉树套字典树
看了道题,是要写个字典树排序的,但又不局限于二十六个字母,于是来了个三叉字典树(二叉树套字典树)。最差时间复杂度是trie树的常数倍,空间比trie树省得多了。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<stack>
#include<vector>
#include<cmath>
#include<string>
using namespace std;
typedef struct Node
{char ch;int count;Node *lson, *rson, *subtree;
}Node ,*Nodelink;Nodelink create(char ch)
{Nodelink p = new Node;p->ch = ch;p->lson = NULL;p->rson = NULL;p->subtree = NULL;p->count = 0;return p;
}
Nodelink root = create('\0');
void insert(char str[])
{int i;Nodelink p = root;for(i = 0; i < strlen(str); i++){if(p->subtree == NULL)p->subtree = create('str[i]');p = p->subtree;while(p->ch != str[i]){if(str[i] < p->ch){if(p->lson == NULL)p->lson = create(str[i]);p = p->lson;}else {if(p->rson == NULL)p->rson = create(str[i]);p = p->rson;}}}p->count ++;
}
char pp[44];
void dfs(int top, Nodelink p)
{int i;if(p->lson != NULL)dfs(top, p->lson);pp[top] = p->ch;for(i = 0; i < p->count; i++){pp[top + 1] = '\0';printf("%s\n", pp);}if(p->subtree != NULL) dfs(top + 1, p->subtree);if(p->rson != NULL)dfs(top, p->rson);
}
Nodelink destroy(Nodelink p)
{if(p->lson != NULL)p->lson = destroy(p->lson);if(p->subtree != NULL)p->subtree = destroy(p->subtree);if(p->rson != NULL)p->rson = destroy(p->rson);delete p;return NULL;}
int main()
{char str[33];freopen("test.in", "r", stdin);while(~scanf("%s", str)){insert(str);}dfs(0, root);destroy(root);return 0;
}
(三叉字典树)二叉树套字典树相关推荐
- 暑假集训8.10-网络流套树剖套线段树
题目:dtoj2797旅行商 其实就是裸的网络流套树剖套线段树其实代码不难码 emmmmmm我决定草率的直接上代码,这可能是一条无营养的博客.... #include<bits/stdc++.h ...
- python列表去重_python 字典列表/列表套字典 去重重复的字典数据
python 字典列表/列表套字典 数据去重 第一种:def deleteDuplicate(li): func = lambda x, y: x if y in x else x + [y] li ...
- Algorithm:树结构(二叉树/多路查找树/字典树)的简介、具体结构(FBT/CBT/BST/BBT/Heap/Huffman、B树/B+树/R树、字典树)及其运算(增删查/遍历/旋转)、代码实现
Algorithm:树结构(二叉树/多路查找树/字典树)的简介.具体结构(FBT/CBT/BST/BBT/Heap/Huffman.B树/B+树/R树.字典树)及其运算(增删查/遍历/旋转).代码实现 ...
- 字典树,01字典树,可持续化01字典树(总结+例题)
目录 字典树 01字典树 字典树例题: power oj 2390: 查单词 HDU 1671 Phone List HDU 1004Let the Balloon Rise HDU 1075 Wha ...
- 字典树(Trie/前缀树)
目录 字典树的概念 字典树的逻辑 字典树的实现 易混点剖析 代码示例 字典树的概念 字典树(Trie)是一种空间换时间的数据结构,是一棵关于"字典"的树.主要用于统计.排序和保存大 ...
- 字典树与01字典树详解
[镇楼] 不满足于粗浅的表面了解字典树吗,今天!由我给大家带来!字典树与01字典树的解析!! 目录 [引入] [字典树] [01字典树] [引用参考] [引入] 字典是干啥的?查找字的.那么字典树 ...
- 从Trie树(字典树)和后缀树
从Trie树(字典树)谈到后缀树 转载:http://blog.csdn.net/v_july_v/article/details/6897097#t22 感谢作者,侵删. 引言 常关注本blog的读 ...
- 字典树实现_trie 字典树的实现方法
trie 字典树 (前缀树) 什么是字典树 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文 ...
- 前缀树(字典树,单词查找树,Trie树)
参考网址:https://blog.csdn.net/u013949069/article/details/78056102?utm_source=copy 概述 前缀树又名字典树,单词查找树,Tri ...
最新文章
- JavaScript(九)正则表达式
- 【Android 进程保活】Low Memory Killer 机制
- 《算法竞赛进阶指南》打卡-基本算法-AcWing 90. 64位整数乘法:位运算
- 论文解读:深度监督网络(Deeply-Supervised Nets)
- 基础知识:数字、字符串、列表 的类型及内置方法
- mac上安装MySQL
- 请分析比较下列四种染料在相同浓度和相同温度的水染液中的聚集度大小?
- 23种设计模式(5)-适配器模式
- 大学计算机专业绩点在3.5算好,大学绩点3.5算什么水平 绩点低有哪些补救方法...
- el-table表格数据没有刷新
- js监听scrolltop_js中scrollTop()方法和scroll()方法用法示例
- 数组及引用类型内存分配
- redis操作之迭代器 hscan
- Visual Studio使用教程
- PNG图片怎么转成ICO
- 怎样用计算机画太极,用IF函数画个太极图
- OpenGL纹理叠加
- 移动web之四种常用布局
- 【时光隧道——使用Html、JavaScript等实现(附源代码)】
- P 算法与 K 算法
热门文章
- 你们知道什么是PMP吗?
- DirectDraw 游戏编程基础(2)
- PHP程序‘猿’必备的七种武器
- 电子商务(电销)平台中订单模块(Order)数据库设计明细
- ChatGPT生成Excel统计公式
- 【GA三维路径规划】基于matlab遗传算法无人机三维路径规划【含Matlab源码 1268期】
- String总结,自己在麦库记事 学习笔记的整理
- tsn-pytorch代码实验
- 智慧小区 HC 系统安装配置简单流程(V2022-09-28)
- martin fowler_注意:Martin Fowler的微服务