LeetCode - 129. Sum Root to Leaf Numbers

遇到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非常典型的用法,典型題目最好整個記下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章