337. 打家劫舍 III
作者:互联网
package leetcode; import java.util.HashMap; public class demo_337 { //当前节点值参与计算,所能获取的最大值 HashMap<TreeNode, Integer> t=new HashMap<TreeNode, Integer>(); //当前节点值不参与计算,所能获取的最大值 HashMap<TreeNode, Integer> f=new HashMap<TreeNode, Integer>(); public int rob(TreeNode root) { if(root==null) { return 0; } backtarce(root); return Math.max(t.get(root), f.get(root)); } public void backtarce(TreeNode root) { if(root!=null) { backtarce(root.right); backtarce(root.left); //当前节点参与计算,则其左右节点不能参与计算 t.put(root, root.val+f.getOrDefault(root.left, 0)+f.getOrDefault(root.right, 0)); //当前节点不参与计算,则各自计算左右子树的最大值的和 f.put(root, Math.max(t.getOrDefault(root.left, 0), f.getOrDefault(root.left, 0))+Math.max(t.getOrDefault(root.right, 0), f.getOrDefault(root.right, 0))); } } }
标签:right,HashMap,III,337,backtarce,getOrDefault,打家劫舍,root,left 来源: https://www.cnblogs.com/Yshun/p/16210524.html