数据结构及算法
XIANYU95
搬砖的农民
展开
-
并查集——小米笔试题
并查集简介: 并查集(Union-find Sets)是一种非常精巧而实用的数据结构,它主要用于处理一些不相交集合的合并问题。一些常见的用途有求连通子图、求最小生成树的 Kruskal 算法和求最近公共祖先(Least Common Ancestors, LCA)等。 使用并查集时,首先会存在一组不相交的动态集合 S={S1,S2,⋯,Sk}S={S1,S2,⋯,Sk},一般都会使用一原创 2016-07-09 19:34:53 · 738 阅读 · 0 评论 -
AVLTree简单实现
AVL树的性质 1. 左子树和右子树的高度之差的绝对值不超过1 2. 树中的每个左子树和右子树都是AVL树 3. 每个节点都有一个平衡因子(balance factor--bf),任一节点的平衡因子是-1,0,1。(每个节点的平衡因子等于右子树的高度减去左子 树的高度 ) AVL树的效率 一棵AVL树有N个节点,其高度可以保持在log2N,插入/删除/查找的时间复杂度也是log2N原创 2016-07-09 19:18:10 · 428 阅读 · 0 评论 -
二叉树三种遍历(递归及非递归)的实现
#include #include #include using namespace std; template struct TreeNode { T _value; TreeNode* _firstChild; TreeNode* _nextBorther; }; template struct BinaryTreeNode { T _value; BinaryTreeNo原创 2016-01-12 20:59:22 · 439 阅读 · 0 评论 -
简单实现单链表
#include #include using namespace std; typedef int DataType; struct LinkNode { DataType _data; LinkNode* _next; LinkNode(const DataType& x) :_data(x) ,_next(NULL) {} }; class SList { publ原创 2016-01-12 20:53:29 · 373 阅读 · 0 评论 -
用两个栈实现一个队列
思路: 主要抓住栈的“先进后出”和队列的“先进先出”。 s1是入栈的,s2是出栈的。 入队列,直接压到s1是就行了。出队列,先把s1中的元素全部出栈压入到s2中,弹出s2中的栈顶元素;再把s2的所有元素全部压回s1中。 代码实现: #include using namespace std; template class原创 2015-10-27 15:21:48 · 132 阅读 · 0 评论