Go 4ms very simple
go\nfunc rob(root *TreeNode) int {\n\treturn max(robber(root))\n}\n\nfunc robber(node *TreeNode) (int, int) {\n\tif node == nil {\n\t\treturn 0, 0\n\t}\n\tgold 
```go\nfunc rob(root *TreeNode) int {\n\treturn max(robber(root))\n}\n\nfunc robber(node *TreeNode) (int, int) {\n\tif node == nil {\n\t\treturn 0, 0\n\t}\n\tgold := node.Val\n\tl1, l2 := robber(node.Left)\n\tr1, r2 := robber(node.Right)\n\tc1 := gold + l2 + r2\n\tc2 := max(l1, l2) + max(r1, r2)\n\treturn c1, c2\n}\n\nfunc max(values ...int) int {\n\tmaxValue := math.MinInt32\n\tfor _, v := range values {\n\t\tif v > maxValue {\n\t\t\tmaxValue = v\n\t\t}\n\t}\n\treturn maxValue\n}\n```
['Go']