码迷,mamicode.com
首页 > 其他好文 > 详细

4. 树形DP

时间:2020-04-26 11:12:02      阅读:55      评论:0      收藏:0      [点我收藏+]

标签:use   res   bin   树形dp   not   tco   ber   重要   很多   

337. 打家劫舍 III

https://leetcode-cn.com/problems/house-robber-iii/

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func rob(root *TreeNode) int {
	return Help(root)
}
//缓存很重要,可以存很多子问题的值
var m = map[*TreeNode]int{}
func Help(root *TreeNode) int{
	if root == nil{
		return 0
	}
	if v,ok := m[root];ok{
		return v
	}
	res,do,not_do := 0,root.Val,0
	//do / not_do
	if root.Right != nil{
		do +=  Help(root.Right.Right) + Help(root.Right.Left)
	}
	if root.Left != nil{
		do += Help(root.Left.Left) + Help(root.Left.Right)
	}
	not_do += Help(root.Left)+Help(root.Right)
	res = MAX(do,not_do)
	m[root] = res
	return res
}

func MAX(i,j int) int{
	if i<j{
		return j
	}else{
		return i
	}
}

  

4. 树形DP

标签:use   res   bin   树形dp   not   tco   ber   重要   很多   

原文地址:https://www.cnblogs.com/wsw-seu/p/12777447.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!