题解 | #二叉树中和为某一值的路径(三)#
二叉树中和为某一值的路径(三)
https://www.nowcoder.com/practice/965fef32cae14a17a8e86c76ffe3131f
package main import _"fmt" import . "nc_tools" /* * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @param sum int整型 * @return int整型 */ func FindPath( root *TreeNode , sum int ) int { ans:=0 //一个节点只访问一次,记忆化搜索 vis:=map[*TreeNode]bool{} var order func(*TreeNode,int) order=func(root *TreeNode,carry int){ if root==nil{ return } carry-=root.Val if carry==0{ ans++ } if root.Left!=nil{ order(root.Left,carry) if _,ok:=vis[root.Left];!ok{ vis[root.Left]=true order(root.Left,sum) } } if root.Right!=nil{ order(root.Right,carry) if _,ok:=vis[root.Right];!ok{ vis[root.Right]=true order(root.Right,sum) } } } vis[root]=true order(root,sum) return ans }