2018-11-19LeetCode 339 打家劫舍3

递归法解决:

分别讨论是否包含还是不包含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);

    }

}

你可能感兴趣的:(2018-11-19LeetCode 339 打家劫舍3)