Day 48
題目描述
思路
我們利用sum這個全局變量來保存總和值,遞歸函數sum來計算每個根到葉子節點路徑所代表的數,由于我們需要遍歷到每條根到葉子節點的路徑,所有我采取了前序遍歷,如果不是葉子節點,就計算到該節點代表的值,就是qian*10+當前節點的值,qian的意思就是根到這個節點路徑上的值(代表的數),到根節點就先獲取到這個值,然后加到sum即可。
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {public int sum=0;//保存總和public void sums(TreeNode root,int qian){if(root==null){return;}if(root.left==null&&root.right==null){qian=qian*10+root.val;sum+=qian;}else{qian=qian*10+root.val;}sums(root.left,qian);sums(root.right,qian);}public int sumNumbers(TreeNode root) {//就是前序遍歷if(root.left==null&&root.right==null){//特殊處理根就是葉子節點return root.val;}sums(root.left,root.val);sums(root.right,root.val);return sum;}
}