遇到Binary Tree就要想到recursion, divide and conquer,而且這種用單個位的數字組成整個數字的問題也需要多注意一下。一開始的思路想歪了,想這是把所有的數字都算出來,然後再相加,陷入到一個圈子裏出不來,後來看了discuss版才發現一直用遞歸的話程序非常簡潔,代碼如下:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public int sumNumbers(TreeNode root) {
return sum(root, 0);
}
private int sum(TreeNode root, int result){
if(root == null) return 0;
if(root.left == null && root.right == null) return result * 10 + root.val;
return sum(root.left, result * 10 + root.val) + sum(root.right, result * 10 + root.val);
}
}
思考:
1. 這道題目是binary tree和數字分開組合兩種問題的常見方法,也是recursion和divide and conquer非常典型的用法,典型題目最好整個記下