HasPathsum 有 2 个参数,一个是树节点,另一个是和值,最初我们检查节点是否为空,如果节点为空则返回 false。如果节点不为空,那么我们调用 HasPathSum 递归方法,在每个递归步骤中,我们不断从节点值中减去总和值。如果 sum 的值达到 0,那么我们得出结论,给定的树具有等于 sum 的路径并返回 true。
public class TreesPgm{ public class Node{ public int Value; public Node LeftChild; public Node RightChild; public Node(int value){ this.Value = value; } public override String ToString(){ return "Node=" + Value; } } public bool HasPathSum(Node node, int sum){ if (root == null){ return false; } return helperHasPathSum(node, sum); } private bool helperHasPathSum(Node root, int sum){ if (root == null){ return false; } sum -= root.Value; if (root.LeftChild == null &&root.RightChild== null && sum == 0){ return true; } return helperHasPathSum(root.LeftChild, sum) || helperHasPathSum(root.RightChild, sum); } }
5 2 6 1 3 7输出结果
True