给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 采用基于递归的深度搜索算法。 深度搜索:首先找出所有从根节点到叶子节点的路径,再比较最小深度。 递归:需要定义递归函数。 复杂度分析: 时间复杂度:节点个数为N。每个节点访问一次,O(n). 空间复杂度:最坏 ...
分类:
其他好文 时间:
2019-08-18 13:18:29
阅读次数:
88
${\color{cyan}{>>Question}}$ 题意让我们用最少的代价把叶子节点到根节点的距离调成相同 每次向最长链看齐即可 令$f[u]$表示以$u$为根到叶节点的最长链长度 则$$f[u] = max\left\{f[v]+e(u,v)\right\}$$ 统计答案 $$ans = \ ...
分类:
其他好文 时间:
2019-08-15 09:26:50
阅读次数:
71
题目大意 给出一个有根树,$1$为根,若某个节点的儿子全是叶子,你可以将该节点的儿子全部剪掉,这样的操作可以进行多次。定义这棵树的价值为:将树上所有叶子按照$dfs$序排序后,所有叶子点权之和 相邻两叶子路径上点权最大值。现在你要通过剪枝使得这棵树价值最大。 $n\leq 100000$ 分析 设$ ...
分类:
其他好文 时间:
2019-08-14 12:16:38
阅读次数:
77
题目链接:https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/ 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,2 ...
分类:
其他好文 时间:
2019-08-14 09:17:42
阅读次数:
80
定义: 树的直径指树上距离最远的两点间的距离。 性质: ① 直径两端点一定是两个叶子节点。 ② 距离任意点最远的点一定是直径的一个端点,这个基于贪心求直径方法的正确性可以得出。 ③ 对于两棵树,如果第一棵树直径两端点为(u,v),第二棵树直径两端点为(x,y),用一条边将两棵树连接,那么新树的直径一 ...
分类:
其他好文 时间:
2019-08-13 13:48:04
阅读次数:
138
链接:http://poj.org/problem?id=3253 题解 木板切割顺序不定,自由度很高,为了使开销尽可能地小,可采用最优二叉树的结构 首先,切割的方法可以参考下图的二叉树 每个叶子节点对应一块切割的木板。叶子节点深度对应为得到木板所需的切割次数 开销就等于各叶子节点的 木板长度 * ...
分类:
其他好文 时间:
2019-08-11 21:14:54
阅读次数:
95
35+60+8 T1暴力,没有想到二维前缀和搞了个四维数组硬刚没敢开大,开大没有MLE多了15分; T2贪心正解,然而没开两倍边,dfs时候sd的只压了叶子?60->75->100 T3 rand数。。。 不行啊,差距太大了,时间分配不均,思维太傻,,,T1一点感觉没有,T2想了将近1个小时多,而且 ...
分类:
其他好文 时间:
2019-08-11 17:36:31
阅读次数:
97
组合模式Composite 使用组合模式的场景:把部分和整体的关系用树形结构表示,从而使客户端可以使用统一的方式处理对象和整体对象(文件和文件夹) 组合模式核心: -抽象构件(Component)角色:定义了叶子和容器的共同点 -叶子(Leaf)构件角色:无子节点 -容器(Composite)构件角 ...
分类:
其他好文 时间:
2019-08-11 13:27:56
阅读次数:
125
树的数值为[0, 9], 每一条从根到叶子的路径都构成一个整数,(根的数字为首位),求所有构成的所有整数的和 深度优先搜索,通过一个参数累加整数 程序运行动态演示:http://simpledsp.com/FS/Html/lc129.html ...
分类:
其他好文 时间:
2019-08-11 11:12:18
阅读次数:
94
考试只好随便骗骗分过去啦啦啦..... 正解是玄学线段树: 以每个操作为叶子节点,我们定义几个变量ce表示层数,h表示高度,add表示所减的层数 那么问题转化为单点修改的问题输出直接是根节点答案 但是我们发现合并区间很毒瘤 我们分两种情况: 设L为左儿子,R为右儿子。 1.T[L].ce<T[R]. ...
分类:
其他好文 时间:
2019-08-10 19:30:50
阅读次数:
73