zoukankan      html  css  js  c++  java
  • [LeetCode] 129. Sum Root to Leaf Numbers

    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.

    Note: A leaf is a node with no children.

    Example:

    Input: [1,2,3]
        1
       / 
      2   3
    Output: 25
    Explanation:
    The root-to-leaf path 1->2 represents the number 12.
    The root-to-leaf path 1->3 represents the number 13.
    Therefore, sum = 12 + 13 = 25.

    Example 2:

    Input: [4,9,0,5,1]
        4
       / 
      9   0
     / 
    5   1
    Output: 1026
    Explanation:
    The root-to-leaf path 4->9->5 represents the number 495.
    The root-to-leaf path 4->9->1 represents the number 491.
    The root-to-leaf path 4->0 represents the number 40.
    Therefore, sum = 495 + 491 + 40 = 1026.

    求根到叶子节点数字之和。题意是给一棵二叉树,请根据图示做加法。

    思路是前序遍历递归做。记录一个变量sum存之前所有的加和,当遍历到当前节点的时候,sum *= 10 再加当前的节点值cur.val。

    时间O(n)

    空间O(n)

    Java实现

     1 class Solution {
     2     int total;
     3 
     4     public int sumNumbers(TreeNode root) {
     5         total = 0;
     6         helper(root, total);
     7         return total;
     8     }
     9 
    10     private void helper(TreeNode root, int sum) {
    11         if (root == null) {
    12             return;
    13         }
    14         sum = sum * 10 + root.val;
    15         if (root.left == null && root.right == null) {
    16             total += sum;
    17             return;
    18         }
    19         helper(root.left, sum);
    20         helper(root.right, sum);
    21     }
    22 }

    JavaScript实现

     1 /**
     2  * @param {TreeNode} root
     3  * @return {number}
     4  */
     5 var sumNumbers = function (root) {
     6     if (root == null) {
     7         return 0;
     8     }
     9     var total = 0;
    10     helper(root, 0);
    11     return total;
    12 
    13     function helper(root, sum) {
    14         if (root == null) {
    15             return;
    16         }
    17         sum = sum * 10 + root.val;
    18         if (root.left == null && root.right == null) {
    19             total += sum;
    20             return;
    21         }
    22         helper(root.left, sum);
    23         helper(root.right, sum);
    24     }
    25 };

    相关题目

    129. Sum Root to Leaf Numbers

    1022. Sum of Root To Leaf Binary Numbers

    LeetCode 题目总结

  • 相关阅读:
    《结对-贪吃蛇游戏-最终程序》
    《团队-科学计算器-模块测试过程》
    Bootstrap
    Angularjs的核心概念
    jQuery Ajax
    浏览器为什么会有兼容性问题
    BFC
    sass
    HTML5
    面向过程和面向对象编程
  • 原文地址:https://www.cnblogs.com/cnoodle/p/12545187.html
Copyright © 2011-2022 走看看