数据结构
文章平均质量分 79
tianya_team
关注抖音号:天天coding,免费获得源码以及技术指导。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
trie数和后缀树
1.trie树 字典树(trie)可以保存一些字符串->值的对应关系,字典树的插入和查询时间复杂度都是O(k),其中k是key的长度,与字典树中保存元素数无关。其缺点是空间消耗高。 其核心思想是以空间换时间。利用字符串的公共前缀来降低查询时间开销已达到提高效率的目的。 trie树的结点信息结构体: struct TrieNode{ int count; //统计该结点的单词出现的原创 2016-03-09 22:01:40 · 423 阅读 · 0 评论 -
二叉树的非递归前序、中序、后序、层次遍历
1.前序非递归 /*非递归前序遍历*/ void PreOrderNonRecurive(TreeNode *root) { if (!root) return; stack s; s.push(root); while (!s.empty()) { TreeNode *temp = s.top(); cout data << ""; s.pop(); if (temp原创 2016-03-10 12:22:24 · 628 阅读 · 0 评论 -
面试题58:检查单链表是否回文
题目: 对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断该链表是否回文。 边界条件: 传入指针为空。 思路: 先通过两个指针,来找到中间结点指针mid,然后mid指针到链表末端开始回溯,另一个指针head开始和这个指针的值进行比较。 #include using namespace std; struct ListNode {原创 2016-03-22 22:01:46 · 433 阅读 · 0 评论 -
哈夫曼树
路径长度: 从树中一个结点到另一个结点之间的分支构成两个结点之间的路径,路径上的分支数目称作路径长度。 树的路径长度: 树的路径长度就是从树根到每一个结点的路径长度之和。 哈夫曼树: 带权路径长度WPL最小的二叉树称作哈夫曼树。也称为最优二叉树。 二叉树a的WPL=5*1+15*2+40*3+30*4+10*4=315 二叉树b的WPL=5*3+15*3+40*2+30*2+原创 2016-03-24 10:36:48 · 424 阅读 · 1 评论 -
bitmap
bitmap是一个非常有用的结构。所谓的bitmap是用一个bit位来标记某个元素对应的value,而key即是该元素。 例如bitmap[key]=0x1;表示key这个元素有出现。 由于采用了bit为单位来存储数据,因此在存储空间方面,可以大大节省。 使用范围:可进行数据的快速查找,判重,删除,一般来说数据范围在int的10倍以下. 问题实例: 1.已知某个文件包含一些电话号码,每个原创 2016-04-14 13:56:19 · 444 阅读 · 0 评论 -
跳跃表
一、相关面试题: 1.跳跃表有没有听说过? 2.如何让链表的元素查询接近线性时间? 二、跳跃表的引入 我们知道,普通单链表查询一个元素的时间复杂度为O(n),即使该单链表是有序的,我们也不能通过二分的方式缩减时间复杂度。 如上图,我们要查询元素为55的结点,必须从头结点,循环遍历到最后一个节点,不算-INF(负无穷)一共查询8次。那么用什么办法能够用更少的原创 2016-10-03 18:11:24 · 966 阅读 · 0 评论
分享