本题是二叉树上的最小费用监控覆盖:在节点放置侦察守卫可照亮该节点、其父节点与子节点;每个节点成本为 TreeNode.val,要求覆盖全部节点且总成本最小。
与「监控二叉树(Binary Tree Cameras)」同类,用树形 DP 自底向上。对每个节点维护三种状态的最小代价:
wait):本节点尚未被照亮,子树须已自行覆盖完毕。covered):本节点被某个子节点的守卫照亮,自身不再放守卫。placed):在本节点放守卫,累加 node.val,两侧子树取各自三种状态的最小值。有一张二叉树地图,每一个节点都被战争迷雾所覆盖。在二叉树节点上插上一个侦察守卫,可以照亮该节点自身以及它的父节点和它的子节点的战争迷雾。在每个节点上插上侦察守卫的成本并不一样,用 cost[i] 表示节点 i 上的成本,每个节点的成本是正整数。
要求:
补充说明:
一行,一个层序遍历字符串(含首尾圆括号),空节点用 # 表示,例如 (5,1,10,2,8,#,3)。
输出最小的总费用。
输入
(5,1,10,2,8,#,3)
输出
4
说明

最优方案:
2(成本 1)和节点 6(成本 3)插上侦察守卫,总成本 42 覆盖 2,1,4,5;节点 6 覆盖 6,3;所有节点均被覆盖输入
(3,1,1)
输出
2
说明

1 插上侦察守卫,可照亮所有地图,成本是 32 和节点 3 插上侦察守卫,可照亮所有地图,成本是 1+1=22
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册