funcclosedIsland(grid [][]int)int{var num intfor i:=0; i<len(grid); i++{for j:=0; j<len(grid[0]); j++{if grid[i][j]==0&&dfs(grid, i, j){
num +=1}}}return num
}funcdfs(grid [][]int, i, j int)bool{if i ==len(grid)|| j ==len(grid[0])|| i <0|| j <0{returnfalse}if grid[i][j]==1{returntrue}
grid[i][j]=1
a :=dfs(grid, i-1, j)
b :=dfs(grid, i+1, j)
c :=dfs(grid, i, j-1)
d :=dfs(grid, i, j+1)if a && b && c && d {returntrue}returnfalse}
var res [][]intfuncpathSum(root *TreeNode, sum int)[][]int{
res =[][]int{}dfs(root, sum,[]int{})return res
}funcdfs(root *TreeNode, sum int, stack []int){if root ==nil{return}
stack =append(stack, root.Val)if root.Left ==nil&& root.Right ==nil{if sum == root.Val {
r :=make([]int,len(stack))copy(r, stack)
res =append(res, r)}}dfs(root.Left, sum-root.Val, stack)dfs(root.Right, sum-root.Val, stack)}