在做二叉树的题目的时候,如果你觉得和动态规划有点像,那就用动态规划的思想来做,然后树的遍历是后序遍历的,和动态规划由底向上的思想不谋而合

「动态规划」同样可以作用在树形结构上,这样的问题被称为树形 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相关推荐

  1. 树形dp讲解(你不会后悔点进来)

    希望在看这篇文章前你已经对基础的dp有了一定的了解,就算学的不好也能看懂这篇讲解 我们先以一道例题开头: 树形dp知名入门例题:没有上司的舞会 题目链接 树形dp就是以树为基础的dp(树就不用我说了吧 ...

  2. layui树形父子不关联_DP专题7 | 没有上司的舞会 洛谷1352(树形DP)

    高能预警:这是一篇超过5分钟的学习文章,暑假了可以多学会 本篇继续咱们的DP专题,树形DP入门.动态规划每一个类型的DP都是深坑,期望童鞋们自己在这个系列的基础上多花时间进行拓展,学习愉快~ 在讨论树 ...

  3. 【算法】动态规划+“背包九讲”原理超详细讲解+常见dp问题(9种)总结

    目录 一.动态规划(DP) 二.背包九讲 (1)完全背包 P1616 疯狂的采药(完全背包) (2)01背包 滚动数组 一维数组 P1048 采药(01背包) 01背包表格图示 (3)多重背包 整数拆 ...

  4. [WC2018]通道——边分治+虚树+树形DP

    题目链接: [WC2018]通道 题目大意:给出三棵n个节点结构不同的树,边有边权,要求找出一个点对(a,b)使三棵树上这两点的路径权值和最大,一条路径权值为路径上所有边的边权和. 我们按照部分分逐个 ...

  5. HDU - 2196(树形DP)

    题目: A school bought the first computer some time ago(so this computer's id is 1). During the recent ...

  6. BZOJ5341[Ctsc2018]暴力写挂——边分治+虚树+树形DP

    题目链接: CSTC2018暴力写挂 题目大意:给出n个点结构不同的两棵树,边有边权(有负权边及0边),要求找到一个点对(a,b)满足dep(a)+dep(b)-dep(lca)-dep'(lca)最 ...

  7. 树形DP --算法竞赛专题解析(17)

    本系列文章将于2021年整理出版,书名<算法竞赛专题解析>. 前驱教材:<算法竞赛入门到进阶> 清华大学出版社 网购:京东 当当      想要一本作者签名书?点我 如有建议, ...

  8. AcWing 1077. 皇宫看守(树形DP + 状态机DP)

    AcWing 1077. 皇宫看守(树形DP + 状态机DP) 一.问题 二.分析 1.思路分析 2.状态表示 3.状态转移 4.循环设计 5.初末状态 三.代码 一.问题 二.分析 1.思路分析 在 ...

  9. BNUOJ 52305 Around the World 树形dp

    题目链接: https://www.bnuoj.com/v3/problem_show.php?pid=52305 Around the World Time Limit: 20000msMemory ...

最新文章

  1. [React Router v4] Intercept Route Changes
  2. 字节跳动、阿里等大厂的真实工作体验如何?5 位程序员的自述
  3. cocos dos命令
  4. 关于网页制作的规划与流程图的使用
  5. RabbitMq的学习(一):VirtualHost
  6. pp助手苹果版_生日助手时间管理软件免费版下载-生日助手倒计时app苹果版下载ios...
  7. Matlab for循环subplot画图加标题
  8. Unity3D 怎样在安卓手机上播放视频
  9. Word serach(Medium)
  10. 基于微信小程序的投票系统源码
  11. 常见蛋白质种类_生活中常见食物的营养学分类,以及不同食物的蛋白质含量
  12. Maven Compile 编译报错
  13. 无法更新 EntitySet“Ips_Articles”,因为它有一个 DefiningQuery,而 ModificationFunctionMapping 元素中没有支持当前操作的 Inse...
  14. Neural Transducer, MoCha模型总结
  15. Words Accumlation - Day 4
  16. 求一个好用的简洁设置的PPT倒计时器
  17. 2017年下半年中学综合素质问答题
  18. 【Qt5 for VS】关于出现 Qt platform plugin windows 运行错误的解决方案
  19. JNDI注入学习(看不懂直接喷,别忍着!)
  20. BNUZ自动打卡系统

热门文章

  1. Python库安装失败解决办法
  2. vim退出visual模式
  3. 重庆文化执法部门清理27个违法音乐网站
  4. html的表格宽度单位选项,css表格宽度用什么设置?
  5. Ubuntu安装分区设置
  6. 扎克伯格的政治野心:2017年他想走遍美国52个州
  7. mooc作业怎么上传附件_当下不考虑5G,坚果Pro3与一加7t,你怎么选?
  8. laravel框架整体架构
  9. 3年后,你想在自己的简历上写什么?
  10. 激光雷达+imu_[分享]激光雷达的地图创建与定位