zoukankan      html  css  js  c++  java
  • Leetcode & CTCI ---Day 5

    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.

    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.

    My initial solution used an arrayList to hold all root to leaf numbers, and then finally add them all. 

    public class Solution {
        ArrayList<Integer> result = new ArrayList<Integer>();
        public int sumNumbers(TreeNode root) {
            if (root == null)
                return 0;
            sumNumbersHelper(root, 0);
            int total = 0;
            for (int a : result){
                total += a;
            }
            return total;
        }
        
        public void sumNumbersHelper(TreeNode root, int sum){
            if (root == null)
                return;
            sum = sum * 10 + root.val;
            if (root.left == null && root.right == null){
                result.add(sum);
                return;
            }
            else {
                if (root.left != null)
                    sumNumbersHelper(root.left, sum);
                if (root.right != null)
                    sumNumbersHelper(root.right, sum);
            }
        }
        
    }

    But later I found this much cleaner solution, do not need an arrayList. Instead, just sum them directly.

    public class Solution {
        int result = 0;
        public int sumNumbers(TreeNode root) {
            if (root == null)
                return 0;
            sumNumbersHelper(root, 0);
            return result;
        }
        
        public void sumNumbersHelper(TreeNode root, int sum){
            if (root == null)
                return;
            sum = sum * 10 + root.val;
            if (root.left == null && root.right == null){
                result += sum;
                return;
            }
            else {
                if (root.left != null)
                    sumNumbersHelper(root.left, sum);
                if (root.right != null)
                    sumNumbersHelper(root.right, sum);
            }
        }
        
    }
  • 相关阅读:
    Jenkins自定义变量共享
    HTML中调用JavaScript的几种情况和规范写法
    [Python] 建 Django 项目
    [Django] Window上通过IIS发布Django网站
    [Python] 怎么把HTML的报告转换为图片,利用无头浏览器
    VMware vSphere Client
    mysql优化
    LINUX 内核的优化
    sed强大的固定替换格式
    nfs以及优化
  • 原文地址:https://www.cnblogs.com/timoBlog/p/4644486.html
Copyright © 2011-2022 走看看