import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * public TreeNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return int整型 */ public int sumNumbers (TreeNode root) { // write code here return dfs(root, 0); } private int dfs(TreeNode node, int prevSum) { if (node == null) return 0; int sum = prevSum * 10 + node.val; if (node.left == null && node.right == null) return sum; return dfs(node.left, sum) + dfs(node.right, sum); } }
该代码使用的编程语言是 Java。
该题考察了两个主要的知识点:
- 二叉树:代码中使用了二叉树的数据结构来表示节点和节点之间的关系。理解二叉树的基本概念,包括节点、左子树、右子树等,对于理解和修改该代码至关重要。
- 深度优先搜索(DFS):代码中使用了深度优先搜索算法来遍历二叉树,并计算从根节点到叶子节点路径上的数字之和。
定义了一个 TreeNode
类来表示二叉树节点。Solution
类中的 sumNumbers
方法接收一个 TreeNode
类型的参数 root
,表示二叉树的根节点,并返回一个整数值。
在 dfs
方法中,我们使用深度优先搜索来遍历二叉树。通过传递下一个节点的数值和当前节点之前的累积和,我们可以计算出从根节点到当前节点的路径上所代表的数字的和。如果当前节点是叶子节点,则直接返回该数字的和。否则,我们递归计算左子树和右子树的数字和,然后返回它们的和作为结果。
在 sumNumbers
方法中,我们调用 dfs
方法,并传递初始的累积和为 0。最终将得到的结果作为方法的返回值。