some more problems
This commit is contained in:
42
binary-tree-cameras/sol.go
Normal file
42
binary-tree-cameras/sol.go
Normal file
@@ -0,0 +1,42 @@
|
||||
package main
|
||||
|
||||
type TreeNode struct {
|
||||
Val int
|
||||
Left *TreeNode
|
||||
Right *TreeNode
|
||||
}
|
||||
|
||||
/**
|
||||
* Definition for a binary tree node.
|
||||
* type TreeNode struct {
|
||||
* Val int
|
||||
* Left *TreeNode
|
||||
* Right *TreeNode
|
||||
* }
|
||||
*/
|
||||
func minCameraCover(root *TreeNode) int {
|
||||
covered := map[*TreeNode]bool{
|
||||
nil: true,
|
||||
}
|
||||
return dfs(root, nil, covered)
|
||||
}
|
||||
|
||||
func dfs(node, parent *TreeNode, covered map[*TreeNode]bool) int {
|
||||
if node != nil {
|
||||
out := dfs(node.Left, node, covered)
|
||||
out += dfs(node.Right, node, covered)
|
||||
|
||||
_, nc := covered[node]
|
||||
_, lc := covered[node.Left]
|
||||
_, rc := covered[node.Right]
|
||||
if parent == nil && !nc || !lc || !rc {
|
||||
covered[node] = true
|
||||
covered[parent] = true
|
||||
covered[node.Left] = true
|
||||
covered[node.Right] = true
|
||||
return out + 1
|
||||
}
|
||||
return out
|
||||
}
|
||||
return 0
|
||||
}
|
Reference in New Issue
Block a user