题目描述: 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 思路分析:递归(二叉树最大深度,等于左右子树的最大深度+1) 代码实现: 一、深度优先比遍历(DFS) 二、层次遍历(BFS,广度优先) 时间复杂度:O(N ...
分类:
其他好文 时间:
2019-11-12 11:06:08
阅读次数:
97
1.图的两种遍历方式 图的遍历通常有两种方式,即深度优先搜索(Depth First Search)和广度优先搜索(Breadth First Search)。前者类似于树的先序遍历,而后者类似于树的层次遍历。 2.深搜的实现 ...
分类:
其他好文 时间:
2019-11-12 01:09:01
阅读次数:
69
题目 思路 考场上没有仔细看数据范围,导致疯狂爆炸 正解是分类讨论 也就是指对于不同的数据范围,选择不同的解法 手动滑稽 对于前$70\%$的数据 直接$O(2^n)$ 对于后$30\%$的数据选择DP $dp[i][j][k]$表示前i个选j堆是否能构成k 很明显i那一位可以直接省去 之后转移即可 ...
分类:
其他好文 时间:
2019-11-11 21:36:15
阅读次数:
86
代码如下: 1 class Solution { 2 public: 3 // record[row] 该行对应的列 4 vector<vector<string> > ans; // 结果集 5 vector<vector<string>> solveNQueens(int n) { 6 stri ...
分类:
其他好文 时间:
2019-11-11 12:28:47
阅读次数:
79
dfs+剪枝(vector的使用也很有必要,减少了查询的次数) ...
分类:
其他好文 时间:
2019-11-10 19:05:27
阅读次数:
95
P2680 运输计划 高级树上差分题 经过观察得知,我们要做的是: 清零一条边,使得给定的K条路径的最大值最小 看到最大值最小,想到二分答案 接着,我们对于所有>mid的边,找到它们的公共边 公共边找法:树上差分(当然高级数据结构也可以) 然后判断对于每一条公共边,清零后可不可以成功即可 时间复杂度 ...
分类:
其他好文 时间:
2019-11-10 17:53:02
阅读次数:
97
Snow终于得知母亲是谁,他现在要出发寻找母亲。王国中的路由于某种特殊原因,成为了一棵有n个节点的根节点为1的树,但由于"Birds are everywhere.",他得到了种种不一样的消息,每份消息中都会告诉他有两棵子树是禁忌之地,于是他向你求助了。他给出了q个形如"x y"的询问,表示他不能走 ...
分类:
其他好文 时间:
2019-11-10 17:31:49
阅读次数:
85
图论 void dfs(int x) { dfn[x]=++cnt; for(int i=head[x];i;i=Next[i]) { int y=ver[i]; if(y==pre[x])continue; if(dfn[y]) { if(dfn[y]<dfn[x])continue; ans[+ ...
分类:
其他好文 时间:
2019-11-10 17:24:50
阅读次数:
87
给你一个树N个点,再给出Q个询问,问以x为根的子树中,重心是哪个?2≤n≤300000,1≤q≤30000 Sol:从下到上,根据性质做一下.1:如果某个点x,其子树y的大小超过总结点个数一半,则重心在y这个子树中。2:如果某个树的重心点,其上方点的个数多于其下方点的,则重心要上移 ...
分类:
其他好文 时间:
2019-11-10 17:24:24
阅读次数:
89
理论部分 图的深度遍历和广度遍历都不算很难像极了二叉树的前序遍历和层序遍历,如下面的图,可以用右边的邻接矩阵进行表示,假设以顶点0开始对整幅图进行遍历的话,两种遍历方式的思想如下: 1. 深度优先遍历(depthFirstSearch—DFS) 由初始顶点开始,沿着一条道一直走,当走到走不动的时候, ...
分类:
其他好文 时间:
2019-11-10 15:14:25
阅读次数:
98