437. La suma de la trayectoria III
Dado un árbol binario, cada nodo que se almacenan con un valor entero.
Número total de caminos para encontrar el camino y es igual al valor dado.
Ruta de acceso no requiere partir de la raíz, no es necesario para terminar en un nodo hoja, pero la dirección del trazado debe estar hacia abajo (sólo nodo de padres a nodo hijo).
No más de 1000 nodos del árbol binario, y el rango de valor de nodo es [-1000000,1000000] entero.
Ejemplo:
root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8
10
/ \
5 -3
/ \ \
3 2 11
/ \ \
3 -2 1
Devuelve 3. 8 tienen igual ruta:
1. 5 -> 3
2. 5 -> 2 -> 1
3. -3 -> 11
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int pathSum(TreeNode root, int sum) {
int [] nums = new int[1000] ;
return pathways(root,nums,0,sum);
}
private int pathways(TreeNode root,int[]arr,int level,int sum)
{
if(root==null)
{
return 0 ;
}
int n = 0 ;
arr[level] = root.val ;
int a = sum ;
int l = arr.length ;
for(int j =level;j>=0;j--)
{
a -= arr[j] ;
if(a==0)
{
n++;
}
}
return n + pathways(root.left,arr,level+1,sum) + pathways(root.right,arr,level+1,sum);
}
}