通俗易懂讲解树形DP
在做二叉树的题目的时候,如果你觉得和动态规划有点像,那就用动态规划的思想来做,然后树的遍历是后序遍历的,和动态规划由底向上的思想不谋而合
「动态规划」同样可以作用在树形结构上,这样的问题被称为树形 DP 问题。
我们知道树形结构的特点是:只有一个根结点,因此 先计算深层结点的值,然后递推计算浅层结点的值是树形 dp 问题常见的求解思路,即 后序遍历。并且为了使得求解问题的过程呈现明显的阶段特征,满足 无后效性,通常在结点后面需要增加一维状态,表示「结点选择」或者「结点没有选择」。
因此树形 DP 问题的重要求解思想:
后序遍历:
先计算出左、右子树的结果,然后一层一层向上传递,到根结点返回。
无后效性:
增加维度避免分类讨论。
树形问题典型的求解思路是:
自底向上求解,即:先解决最后一层结点的问题,然后一层一层向上递推,从小树到大树,最后在根结点汇总。一层一层向上汇报求解结果是典型的 后序遍历 的思想。自底向上递推求解是树形 dp 问题的求解阶段,是状态的第一维(在代码中这个维度并不明显)。
leetcode298 二叉树最长连续序列
这里还自定义了一个父节点,真是太6666了
class Solution {int maxlen = 0;public int longestConsecutive(TreeNode root) {TreeNode rootParent = new TreeNode(Integer.MAX_VALUE,root,null);dfs(root,rootParent);return maxlen+1;}public int dfs(TreeNode root,TreeNode parent){if(root == null) return 0;int left = dfs(root.left,root);int right = dfs(root.right,root);int len =root.val - parent.val == 1 ? 1 + Math.max(left,right) : 0;maxlen = Math.max(maxlen,len);return len;}
}
通俗易懂讲解树形DP相关推荐
- 树形dp讲解(你不会后悔点进来)
希望在看这篇文章前你已经对基础的dp有了一定的了解,就算学的不好也能看懂这篇讲解 我们先以一道例题开头: 树形dp知名入门例题:没有上司的舞会 题目链接 树形dp就是以树为基础的dp(树就不用我说了吧 ...
- layui树形父子不关联_DP专题7 | 没有上司的舞会 洛谷1352(树形DP)
高能预警:这是一篇超过5分钟的学习文章,暑假了可以多学会 本篇继续咱们的DP专题,树形DP入门.动态规划每一个类型的DP都是深坑,期望童鞋们自己在这个系列的基础上多花时间进行拓展,学习愉快~ 在讨论树 ...
- 【算法】动态规划+“背包九讲”原理超详细讲解+常见dp问题(9种)总结
目录 一.动态规划(DP) 二.背包九讲 (1)完全背包 P1616 疯狂的采药(完全背包) (2)01背包 滚动数组 一维数组 P1048 采药(01背包) 01背包表格图示 (3)多重背包 整数拆 ...
- [WC2018]通道——边分治+虚树+树形DP
题目链接: [WC2018]通道 题目大意:给出三棵n个节点结构不同的树,边有边权,要求找出一个点对(a,b)使三棵树上这两点的路径权值和最大,一条路径权值为路径上所有边的边权和. 我们按照部分分逐个 ...
- HDU - 2196(树形DP)
题目: A school bought the first computer some time ago(so this computer's id is 1). During the recent ...
- BZOJ5341[Ctsc2018]暴力写挂——边分治+虚树+树形DP
题目链接: CSTC2018暴力写挂 题目大意:给出n个点结构不同的两棵树,边有边权(有负权边及0边),要求找到一个点对(a,b)满足dep(a)+dep(b)-dep(lca)-dep'(lca)最 ...
- 树形DP --算法竞赛专题解析(17)
本系列文章将于2021年整理出版,书名<算法竞赛专题解析>. 前驱教材:<算法竞赛入门到进阶> 清华大学出版社 网购:京东 当当 想要一本作者签名书?点我 如有建议, ...
- AcWing 1077. 皇宫看守(树形DP + 状态机DP)
AcWing 1077. 皇宫看守(树形DP + 状态机DP) 一.问题 二.分析 1.思路分析 2.状态表示 3.状态转移 4.循环设计 5.初末状态 三.代码 一.问题 二.分析 1.思路分析 在 ...
- BNUOJ 52305 Around the World 树形dp
题目链接: https://www.bnuoj.com/v3/problem_show.php?pid=52305 Around the World Time Limit: 20000msMemory ...
最新文章
- [React Router v4] Intercept Route Changes
- 字节跳动、阿里等大厂的真实工作体验如何?5 位程序员的自述
- cocos dos命令
- 关于网页制作的规划与流程图的使用
- RabbitMq的学习(一):VirtualHost
- pp助手苹果版_生日助手时间管理软件免费版下载-生日助手倒计时app苹果版下载ios...
- Matlab for循环subplot画图加标题
- Unity3D 怎样在安卓手机上播放视频
- Word serach(Medium)
- 基于微信小程序的投票系统源码
- 常见蛋白质种类_生活中常见食物的营养学分类,以及不同食物的蛋白质含量
- Maven Compile 编译报错
- 无法更新 EntitySet“Ips_Articles”,因为它有一个 DefiningQuery,而 ModificationFunctionMapping 元素中没有支持当前操作的 Inse...
- Neural Transducer, MoCha模型总结
- Words Accumlation - Day 4
- 求一个好用的简洁设置的PPT倒计时器
- 2017年下半年中学综合素质问答题
- 【Qt5 for VS】关于出现 Qt platform plugin windows 运行错误的解决方案
- JNDI注入学习(看不懂直接喷,别忍着!)
- BNUZ自动打卡系统