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);
            }
        }
        
    }
  • 相关阅读:
    CSDN社区之星专訪:我的蜕变之路
    Linux中运行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory。
    00075_BigInteger
    Delphi中Interface接口的使用方法
    Delphi结构体的扩展,可以自动初始化,反初始化,自定义拷贝函数.
    关于指针和堆栈
    Delphi 中的 procedure of object
    MikroTik RouterOS防火墙与过滤详解
    用 ROS 做内网DNS服务器
    GR32 TImage32的图层绘制原理
  • 原文地址:https://www.cnblogs.com/timoBlog/p/4644486.html
Copyright © 2011-2022 走看看