• 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 }
  • 相关阅读:
    设计模式
    刷新所有视图存储过程
    js杨辉三角控制台输出
    2018申请淘宝客AppKey
    w3c标准 dom对象 事件冒泡和事件捕获
    promise原理
    vue virtual Dom
    css学习
    seo优化
    新概念学习
  • 原文地址:https://www.cnblogs.com/ireneyanglan/p/4938378.html
Copyright © 2020-2023  润新知