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