思路:问题可以转化成间隔遍历树,然后寻找间隔权值和最大的值,间隔 就是 爷爷 + 四个孙子(当然孙子也要作为爷爷递归)
再去递归 爷爷的两个孩子作为爷爷 和 他们的孙子 的间隔最大值(这里当然返回左爷爷 + 右爷爷)
public int rob(TreeNode root) {
if(root == null) return 0;
int val1 = root.val;//记录下爷爷的值
if(root.left != null) val1 += rob(root.left.left) + rob(root.left.right);
if(root.right != null) val1 += rob(root..right.left) + rob(root.right.right);
int val2 = rob(root.left) + rob(root.right);//再去递归爷爷的两个孩子作为爷爷
return Math.max(val1 , val2);
}