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);
            }
        }
        
    }
  • 相关阅读:
    《JFlow: Practical Mostly-Static Information Flow Control》
    《嵌入式Linux C编程》第一章笔记
    Ansible --- 通过Ansible管理地区机房中的内网机器
    等保审核 --- MySQL密码复杂度
    等保审核 --- MySQL连接控制插件
    等保审核 --- MySQL操作审计记录
    CSS中居中的完全指南(中英对照翻译)
    svn提交报database is locked
    PHP session_cache_expire 会话函数
    MySQL CONCAT_WS 函数
  • 原文地址:https://www.cnblogs.com/timoBlog/p/4644486.html
Copyright © 2011-2022 走看看