给定父数组描述的二叉树,我们要找一条“任意点出发、沿父↔子边走、节点不重复”的路径,使得节点权值之和最大。这是经典的“二叉树最大路径和”问题,可用一次后序遍历的树形动态规划解决。
相关算法:树形 DP + 一次后序遍历(Postorder)
对每个节点 u,维护两个量:
down[u]:从 u 出发、向下走到某个子孙的单臂最佳路径和(允许不选子树,等价于与 0 取较大)。二又树里面的路径被定义为:从该树的任意节点出发,经过父=>子或者子=>父的连接,达到任意节点的序列。
注意:
1.同一个节点在一条二叉树路径里中最多出现一次
2.一条路径至少包含一个节点,且不一定经过根节点