递归法解决:
分别讨论是否包含还是不包含root的情况,然后通过回溯法解决。
具体代码如下:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int rob(TreeNode root) {
if(root==null)
{
return 0;
}
return Math.max(robInclude(root),robExclude(root));
}
public int robExclude(TreeNode root)
{
if(root==null)
{
return 0;
}
return rob(root.left)+rob(root.right);
}
public int robInclude(TreeNode root)
{
if(root==null)
{
return 0;
}
return root.val+robExclude(root.left)+robExclude(root.right);
}
}
网友评论