1. 程式人生 > 其它 >動態規劃_打家劫舍III

動態規劃_打家劫舍III

package 資料結構和演算法;
public class d31_動態規劃_打家劫舍III {

    public static void main(String[] args) {
        // TODO 自動生成的方法存根
        
         TreeNode a= new TreeNode(3);
         TreeNode b= new TreeNode(4);
         TreeNode c= new TreeNode(5);
         TreeNode d= new TreeNode(1);
         TreeNode e
= new TreeNode(3); TreeNode f= new TreeNode(0); TreeNode g= new TreeNode(1); a.setLeft(b); a.setRight(c); b.setLeft(d); b.setRight(e); // d.setLeft(f); c.setRight(g); // f.setLeft(h);
// f.setRight(i); int res = rob3(a); System.out.print(res); } public static int rob3(TreeNode root) { int[] res = robAction1(root); return Math.max(res[0], res[1]); } private static int[] robAction1(TreeNode root) { // TODO 自動生成的方法存根
int res[] = new int[2]; if(root ==null) return res; int[] left = robAction1(root.left); int[] right = robAction1(root.right); res[0]= Math.max(left[0], left[1]) + Math.max(right[0], right[1]); res[1] = root.val + left[0] + right[0]; return res; }