package org.example.interview.practice;
/**
* @author xianzhe.ma
* @date 2021/8/21
*/
public class NC_5_ALL_PATH_SUM {
public static int sumNumbers(TreeNode root) {
// write code here
if (root == null) return 0;
return backtrack(root, 0);
}
public static int backtrack(TreeNode root, int sum) {
if (root == null) return sum;
// 加入当前结点的值
sum = sum * 10 + root.val;
if (root.left == null && root.right == null) {
// 到叶子结点返回计算的值
return sum;
}
// 未到叶子结点,则往左右子节点继续计算和
return backtrack(root.left, sum) + backtrack(root.right, sum);
}
public static class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
public static void main(String[] args) {
TreeNode node0 = new TreeNode(4);
TreeNode node1 = new TreeNode(1);
TreeNode node2 = new TreeNode(2);
node0.right = node1;
node0.left = node2;
int result = sumNumbers(node0);
System.out.println(result);
}
}