
算法复习
我怪鸡困
大学牲
展开
-
二叉搜索树
二叉搜索树 二叉搜索树:左子树 < 根节点 < 右子树。且不能出现相同的val。 树的初始化 用数组模拟二叉树 const int maxn = 500050; struct hzw //某dalao qaq { int lc,rc,val; //分别代表左儿子、右儿子和当前节点的val }a[maxn]; int cur,root; //cur为节点的编号,root为根节点的编号 二叉查找树的初始化 const int INF = 0x3f3f3f3f<<1; //原创 2021-12-04 20:57:11 · 554 阅读 · 0 评论 -
二叉树的前、中、后序排列
代码 #include <bits/stdc++.h> using namespace std; const int maxn = 100010; int n; struct hzw { int lc,rc,u,fa; }tree[maxn]; void pro_dfs(int rt) { if(rt == -1) return; cout << ' ' << tree[rt].u; pro_dfs(tree[rt].lc); pro_dfs(tree[原创 2021-11-23 19:16:22 · 1297 阅读 · 3 评论 -
动态规划之01背包问题
01背包可以解决什么类型的问题? 问题:一个小偷潜入了某个幸运儿的家中,小偷的包能够装的赃物有限,问如何拿才能使小偷获得的钱最多?(偷窃是犯法行为,我们不能模仿嗷) 遇到类似于这类问题时,我们就可以用01背包来解决。 状态方程 f[i,j] = Max{ f[i-1,j-Wight[i]]+value[i]( j >= W[i] ), f[i-1,j] } f[i,j]表示从前i件物品中选取若干放在容量为j的背包中可以获得的最大价值。 其中Wight[i]表示第i件物品所占的空间,Value[原创 2021-11-16 19:07:47 · 1009 阅读 · 2 评论