private static int Count(LeetCode437Node root, int sum)
        {
            if (root == null)
            {
                return(0);
            }

            var baseVal = root.val == sum ? 1 : 0;

            var left  = Count(root.left, sum - root.val);
            var right = Count(root.right, sum - root.val);

            return(baseVal + left + right);
        }
        public static int PathSum(LeetCode437Node root, int sum)
        {
            if (root == null)
            {
                return(0);
            }
            var pathLeadingCount = Count(root, sum);

            var leftPathSum = PathSum(root.left, sum);

            var rightPathSum = PathSum(root.right, sum);

            return(pathLeadingCount + leftPathSum + rightPathSum);
        }
 public LeetCode437Node(int val = 0, LeetCode437Node left = null, LeetCode437Node right = null)
 {
     this.val   = val;
     this.left  = left;
     this.right = right;
 }