1. dp数组的含义

    下标为0记录不偷该节点所得到的的最大金钱,下标为1记录偷该节点所得到的的最大金钱。
    后序遍历递归时每次返回的是dp数组

    1. 递归的终止条件

    空节点直接返回空dp数组(默认初始化为0,0)

    1. 遍历顺序

    后序遍历,因为需要根据递归返回值进行后续计算
    通过递归左节点,得到左节点偷与不偷的金钱。
    通过递归右节点,得到右节点偷与不偷的金钱。

    1. 单层递归逻辑 ```cpp vector left = robTree(cur->left); // 左 vector right = robTree(cur->right); // 右

    // 偷cur int val1 = cur->val + left[0] + right[0]; // 不偷cur int val2 = max(left[0], left[1]) + max(right[0], right[1]); return {val2, val1}; ```