题目:https://leetcode-cn.com/problems/sum-root-to-leaf-numbers/
代码:
class Solution { public int sumNumbers(TreeNode root) { return this.sumNumbers(root, 0); } private int sumNumbers(TreeNode node, int preNum) { if (node == null) { return 0; } //当前节点所代表的数字 int num = preNum * 10 + node.val; if (node.left == null && node.right == null) { //叶子节点,num就是结果 return num; }else{ //非叶子节点,需要递归 return this.sumNumbers(node.left, num) + this.sumNumbers(node.right, num); } } }
新增一个方法,node参数为树中的某一个节点,preNum为根节点到当前节点之前所代表的数字(未包含当前节点的值)
根据题目意思,则当前节点所代表的的数字值为代码中标红部分。有了这个方法,剩下的只要根据条件判断及递归即可。