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 }
  • 相关阅读:
    [GDOI2018]滑稽子图
    单位根反演学习笔记
    ODOO/OPENERP的网页模块QWEB简述
    odoo中的QWeb模板引擎
    项目管理)沟通管理
    从vc6升级到vc7的一些问题及解决方法
    vc++ 2005 发布程序
    颜色取反
    几个VC6.0到VC9.0的错误解决方案
    测试计划测试用例
  • 原文地址:https://www.cnblogs.com/ireneyanglan/p/4938378.html
Copyright © 2011-2022 走看看