三道小偷的题目。基础的题目主要就是当前节点保存两个状态f偷与f不偷。 不偷的话就是和前面偷情况下相等。 偷的话就是max(前不偷+curval,前偷) 值得注意的就是 虽然当前状态是偷的,但不一定是真的偷了当前节点。然后就是环形题目,分成两种情况考虑就可以最后是树状dp 可以用后序遍历求解。 或者用BFS换成数组形式,然后逆推即可。 dp[parentId][0]= dp[2*parentId][1]+dp[2*parentId+1][1]+node[parentId].val dp[parentId][1]= max(dp[2*parentId][0],...[1])+max(dp[2*pa...