![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
Jack_huhu
这个作者很懒,什么都没留下…
展开
-
二叉搜索树的实现
二叉搜索树又称二叉排序树或二叉查找树,具有以下几个性质: (1)、若它的左子树不为空,则左子树上所有结点的值均小于它的根结点的值; (2)、若它的右子树不为空,则右子树上所有结点的值均大于它的根结点的值; (3)、它的左、右子树也分别为二叉搜索树。将一个整型数组用二叉排序树表示出来,其中序遍历就是整型数组的升序排序。在常用排序算法中,二叉排序树是排序效率较高的原创 2017-09-03 20:38:35 · 235 阅读 · 0 评论 -
AVL平衡二叉搜索树
AVL tree是一个“加上了额外平衡条件”的二叉搜索树。其平衡条件的建立是为了确保整棵树的深度为O(logN)。平衡二叉搜索树的大部分实现与普通的二叉搜索树相同,区别在于插入和删除节点之后需要对节点做一个旋转操作来维持平衡。侯捷先生在STL源码剖析中提到,直观上的最佳平衡条件是每个节点的左右子树有着相同的高度,但这也未免太过严苛,我们很难插入新元素而又保持这样的平衡条件。AVL tree于是原创 2017-09-04 15:04:58 · 311 阅读 · 0 评论 -
二叉树的遍历(递归与非递归)
二叉树就是每个结点最多有两个子树(左子树和右子树)的树形存储结构。二叉树的链式存储结构如下:struct TreeNode { char val; TreeNode* left; TreeNode* right; TreeNode(char x) : val(x), left(NULL), right(NULL) { }};原创 2017-08-28 17:29:33 · 246 阅读 · 0 评论 -
LRUCache算法的简单实现
LRU是Least Recently Used的缩写,意为最近最少使用算法。LRUCache是一种常用的缓存替换算法,根据使用率淘汰数据,即使用率最小的会被淘汰,通常会用一个双向链表来实现,在这个双向链表中,如果一个cache被命中,则将这个数据移动到链表的头部,而不经常使用的cache就会逐渐移向链表的尾部,我们会给这个链表设置一个大小作为该双向链表的最大容量,当链表达到最大容量时,就取出链原创 2017-08-28 16:16:02 · 519 阅读 · 0 评论 -
Trie tree 字典树的实现
const int _Size = 26;struct TrieTreeNode { int num; // (标记该节点是否可以形成一个单词,如果count!=0, 则根节点到该节点可以形成一个单词) TrieTreeNode* next[_Size]; /* TrieTreeNode() { num = 1; for (int i = 0; i < _Size;...原创 2019-01-23 01:40:06 · 251 阅读 · 0 评论