数据结构
我不是小哥哥
这个作者很懒,什么都没留下…
展开
-
寻找最近公共祖先(leecode 236)
寻找最近公共祖先(leecode 236) 寻找最近公共祖先分析: 当p,q分别位于root节点的左右两棵子树; p,q位置分布其中一个节点在另一个节点子树内; 该题明显采用回溯的思维,自底向上寻找p,q,找到后便返回,p,q节点,没找到就返回null。可以考虑用后序遍历进行回溯。 第1种情况: root的左右两棵子树l,r应该非空,此时root是最近公共祖先,最后返回root; 第2种情况: 如果root等于其中一个节点,那么root的其中一棵子树非空,另一棵为null;或者两个都为空直接返回root原创 2021-03-22 21:43:35 · 265 阅读 · 0 评论 -
二分法(对应leecode35)
二分法关键在于边界的定义和控制。 一、循环不变量: 顾名思义即循环过程中保持不变的量。 以二分法为例: 在左闭右闭区间——[left,right],在循环过程中要使v[left] <=target<=v[right]且left <= right 在左闭右开区间——[left,right),在循环过程中要使v[left] <=target<v[right]且left < right 示例 #include<iostream> #include<vect原创 2021-02-02 17:12:00 · 108 阅读 · 0 评论 -
最小生成树模版题
Jungle Roads Prime算法 #include<iostream> #include<vector> #include<algorithm> #include<cstring> using namespace std; #define INF 99999 typedef long long int ll ; int n; int v[101][101]; int vis[101]={0},cost[101]; void prim(){ fo原创 2020-10-04 22:01:06 · 71 阅读 · 0 评论 -
0-1背包问题及字典序最小路径(输出放入的物品)
0-1背包问题 (15分) N件物品,第i件物品的重量和价值分别为wi和vi(1≤i≤N),背包容量为W,选择部分物品装入背包,在物品总重量不超过背包容量的条件下,求装入的物品总价值最大的最优装法。 输入格式: 第一行给出正整数N(≤100)和W(≤1000)。接下来N行数据,每行给出两个正整数,第i行的数据对应第i件物品的重量wi 和价值vi(0<wi ,vi≤100)。 输出格式: 在第一行输出装入物品后获得的最大价值。在第二行输出最优装法,按从小到大的顺序依次输出装入背包的物品标号原创 2020-09-05 22:37:55 · 785 阅读 · 0 评论 -
汉诺塔(简单理解)
汉诺塔是经典的递归问题。该问题描述为:有三根相邻的柱子,标号为A、B、C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子C上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方,求移动的过程。 PS:每次只能移动一个圆盘,感觉好像搬砖。。。 如图所示: 就是把A柱上从小到大的圆盘,借助B盘,又按照相同的从小到大的顺序全部移动到C盘上。 思路: 当A柱只有一个圆盘n==1时,可以直接把A移到C。 而当不只一个圆盘时n>1,可以看成先把A(从小到大)一个一个移动n-原创 2020-09-05 20:51:56 · 1353 阅读 · 0 评论 -
树(前序,中序,后序遍历)
/*链表结点定义*/ struct Tree { char data; Tree * left,*right; }; /*前序遍历*/ void preorder(Tree T){ if(T == null) return; printf("%c\n", T->data); preorder(T->left); preorder(T->right); } /*中序遍历*/ void inorder(Tree T){ if(T == null) return; ino原创 2020-09-05 11:17:17 · 116 阅读 · 0 评论 -
DFS 和 BFS代码实现
DFS(深度优先搜索) /* 邻接矩阵实现DFS算法 */ void DFS (Graph G, int i){ int j; visited[i] = true; //visited标记是否访问 printf("%c\n", G.vexs[i]); //G.vexs图结点数组 for (int j = 0; j < G.numVert; ++j) //G.numVert结点数据 { if(!visited[j] && G.arc[i][j] == 1){ /原创 2020-08-15 16:09:41 · 860 阅读 · 0 评论