题目大意:给定一个二叉树,每个节点包含一个0-9的数字,每个根到叶子节点都可以组成一个数,求所有根到叶子节点构成的数的总和。
理解:1)根到叶子节点构成的数,可以采取每次将其左右孩子(如果有)的值更新为根的值*10再加上左右孩子的节点值。
2)采用先根遍历的方法。
实现:
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { private int res = 0; public int sumNumbers(TreeNode root) { if(root == null) return 0; if(root.left == null && root.right == null) { res += root.val; return res; } if(root.left != null) { root.left.val += root.val*10; sumNumbers(root.left); } if(root.right != null) { root.right.val += root.val*10; sumNumbers(root.right); } return res; } }