/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/classSolution{publicintrob(TreeNode root){// 0:当前结点未取 1:当前结点取了int[] result =forRob(root);returnMath.max(result[0], result[1]);}int[]forRob(TreeNode root){// 边界if(root ==null){returnnewint[2];}int[] result =newint[2];// 最优子结构int[] right =forRob(root.right);int[] left =forRob(root.left);// 状态转移方程// root 没偷的情况:左右结点可偷,也可不偷result[0]=Math.max(left[0], left[1])+Math.max(right[0], right[1]);// root 偷了的情况:左右结点一定不偷result[1]= root.val + left[0]+ right[0];return result;}}
更新版
自底向上,状态转移方程是重点,思路可以看上面代码的注释。
classSolution{publicintrob(TreeNode root){int[] ans =robTree(root);returnMath.max(ans[0], ans[1]);}publicint[]robTree(TreeNode root){if(root ==null){returnnewint[]{0,0};}int[] left =robTree(root.left);int[] right =robTree(root.right);int[] now =newint[2];now[0]=Math.max(left[0], left[1])+Math.max(right[0], right[1]);now[1]= root.val + left[0]+ right[0];return now;}}
1M等于多少字节?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!1M等于多少字节?不是1M等于多少字节,是1MB等于多少字节。字节(Byte /bait/ n. [C])是计算机信息技术用于计量存…
文章目录题目描述思路 & 代码题目描述
挺简单的,直接看思路代码吧。
思路 & 代码
就是一个层序遍历,取每层的最右边结点即可
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* T…