zoukankan      html  css  js  c++  java
  • Sum Root to Leaf Numbers 解答

    Question

    Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number.

    An example is the root-to-leaf path 1->2->3 which represents the number 123.

    Find the total sum of all root-to-leaf numbers.

    For example,

        1
       / 
      2   3
    

    The root-to-leaf path 1->2 represents the number 12.
    The root-to-leaf path 1->3 represents the number 13.

    Return the sum = 12 + 13 = 25.

    Solution

    基本思路是Recursion。我们可以这样看待问题:对于非叶子结点,我们更改它的数值(prev * 10 + currentNode.val)。然后将所有叶子结点的值相加即得到结果。

     1 /**
     2  * Definition for a binary tree node.
     3  * public class TreeNode {
     4  *     int val;
     5  *     TreeNode left;
     6  *     TreeNode right;
     7  *     TreeNode(int x) { val = x; }
     8  * }
     9  */
    10 public class Solution {
    11     public int sumNumbers(TreeNode root) {
    12         return dfs(root, 0, 0);
    13     }
    14     
    15     private int dfs(TreeNode root, int prev, int sum) {
    16         if (root == null) {
    17             return sum;
    18         }
    19         prev = prev * 10 + root.val;
    20         if (root.left == null && root.right == null) {
    21             sum += prev;
    22             return sum;
    23         }
    24         return dfs(root.left, prev, sum) + dfs(root.right, prev, sum);
    25     }
    26 }
  • 相关阅读:
    HDU 1022 Train Problem I
    HDU 1702 ACboy needs your help again!
    HDU 1294 Rooted Trees Problem
    HDU 1027 Ignatius and the Princess II
    HDU 3398 String
    HDU 1709 The Balance
    HDU 2152 Fruit
    HDU 1398 Square Coins
    HDU 3571 N-dimensional Sphere
    HDU 2451 Simple Addition Expression
  • 原文地址:https://www.cnblogs.com/ireneyanglan/p/4938378.html
Copyright © 2011-2022 走看看