Data Structures
文章平均质量分 66
Edward_Wong
我们来做朋友吧!
展开
-
[C++]pair<int,int>与make_pair<int,int>
我们知道map和multimap的作用,这两种数据类型在存储数据时,会根据pair#include#includeusing namespace std;int main(){ vector >VP; VP.push_back(make_pair(10,50)); VP.push_back(make_pair(原创 2014-09-22 19:25:49 · 5853 阅读 · 0 评论 -
并查集-判断无向图是否存在环
并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。集就是让每个元素构成一个单元素的集合,也就是按一定顺序将属于同一组的元素所在的集合合并。Find:确定元素属于哪一个子集。它可以被用来确定两个元素是否属于同一子集合。Union:将两个子集合并成同一个集合。代码:转载 2014-10-04 14:37:14 · 1304 阅读 · 0 评论 -
二叉树--前序序列和中序序列重构二叉树
struct BinaryTreeNode{ int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight;};BinaryTreeNode* Construct(int* preorder, int* inorder, int length) { if(preorder == NULL转载 2014-10-01 20:58:25 · 542 阅读 · 0 评论 -
C++ 堆排序
1 堆 1.1 简介n个关键字序列Kl,K2,…,Kn称为(Heap),当且仅当该序列满足如下性质(简称为堆性质):(1)ki=号。//k(i)相当于二叉树的非叶结点,K(2i)则是左孩子,k(2i+1)是右孩子若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:树中任一非叶结点的关键字均不大于(或不小于转载 2014-10-07 12:52:44 · 508 阅读 · 0 评论 -
比较两棵二叉树是否相同
#include using namespace std;struct Node{ int data; Node* left; Node* right;};bool compare_tree(Node* root_1, Node* root_2) { if(root_1 == NULL&&root_2 == NULL) return true;原创 2014-09-29 18:08:34 · 676 阅读 · 0 评论 -
二叉树中和为某一值的路径
#include using namespace std;struct TreeNode { int value; TreeNode* left; TreeNode* right;};TreeNode* createNode(int value) { TreeNode* node = new TreeNode; node -> value = v原创 2014-10-03 21:52:26 · 534 阅读 · 0 评论 -
二叉树 前序,中序,后序遍历 --非递归遍历
前序遍历:#include #include using namespace std;struct TreeNode { int value; TreeNode* left; TreeNode* right;};TreeNode* createNode(int value) { TreeNode* node = new TreeNode;转载 2014-10-06 10:03:33 · 527 阅读 · 0 评论 -
二叉树的前序,中序,后序遍历 递归实现
前序遍历:#include using namespace std;struct TreeNode { int value; TreeNode* left; TreeNode* right;};TreeNode* createNode(int value) { TreeNode* node = new TreeNode; node -> va原创 2014-10-06 09:47:28 · 608 阅读 · 0 评论 -
线性表
#include #include using namespace std;class ListNode{public: char data; ListNode *link; ListNode(){link = NULL;} ListNode(char &item,ListNode *next = NULL){data = item; link = next;}};cla原创 2014-09-02 08:39:38 · 431 阅读 · 0 评论 -
哈希表
a) 定义hash表和基本数据节点原创 2014-09-26 21:08:22 · 657 阅读 · 0 评论 -
二叉树中两个结点的距离
lca是两个节点的最低公共祖先节点:Dist(n1, n2) = Dist(root, n1) + Dist(root, n2) - 2*Dist(root, lca)原创 2014-09-26 17:49:00 · 533 阅读 · 0 评论 -
vector动态二维数组
#include #include using namespace std;int main(){ int n; cin>>n; typedef vector > A; vector b; A a; a.resize(n); b.resize(n); for(A::iterator iter = a.begin(); iter != a.end(); ++iter) {原创 2014-09-15 20:48:57 · 699 阅读 · 0 评论 -
找出二叉树中某个节点的所有祖先节点
对于一颗普通的二叉树和一个节点key,找出该节点的所有祖先节点。#include using namespace std;struct Node{ int val; Node *left,*right;};bool print_pre_node(Node *root, int val) { if(root == NULL) return false; if(root -原创 2014-09-26 15:36:51 · 4404 阅读 · 0 评论 -
队列
#include #include using namespace std;class LinkQueue;class ListNode{ friend class LinkQueue;private: int data; ListNode *link; ListNode(){ link = NULL; }};class LinkQueue{public: Li原创 2014-09-02 08:42:44 · 438 阅读 · 0 评论 -
栈
#include using namespace std;typedef int ElemType;class SeqStack{public: SeqStack(int size); ~SeqStack(){ delete[] elements; } void PushStack(ElemType x); ElemType PopStack(ElemType x); vo原创 2014-09-02 08:42:05 · 484 阅读 · 0 评论 -
寻找二叉树两个节点的最低公共祖先(LCA)
// O(n) 解决 LCA#include #include using namespace std;//二叉树节点struct Node{ int key; struct Node *left, *right;};//公用函数,生成一个节点Node * newNode(int k){ Node *temp = new Node; temp-转载 2014-09-26 17:44:05 · 904 阅读 · 0 评论