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

    【题目】

    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.


    【题意】

        给定一棵二叉树,节点值仅仅可能是[0-9]区间上的值,每一条从根到叶子的节点都能够看成一个整数。现要求把全部路径表示的整数相加,返回和


    【思路】

        DFS,找到左右的路径,实数化每条路径上组合数。将全部的路径上得到的整数求和。
        
        这里2有个问题:
        1. 假设某条路径太长,组合数已经超出了int的上界怎么办
        2. 假设终于的和超出了int的上界怎么办
        
        题目没有进一步的说明,我们默认所给的測试用例都保证不会越界。

        


    【代码】

    /**
     * Definition for binary tree
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        
        void dfs(int&result, int num, TreeNode*node){
            //result表示全部路径的组合
            //num表示根到node的父节点的组合数
            if(node){
                num=10*num+node->val;   //计算从根到当前节点的组合数
                if(node->left==NULL && node->right==NULL){
                    result+=num;    //已经找到一个条路径的组合数,累加到result上
                    return;
                }
                
                if(node->left) dfs(result, num, node->left);
                if(node->right) dfs(result, num, node->right);
            }
        }
    
    
        int sumNumbers(TreeNode *root){
            if(root==NULL)return NULL;
            int result=0;
            int num=0;
            dfs(result, num, root);
            return result;
        }
    };


  • 相关阅读:
    OGG-01298 、OGG-00375、OGG-01668 could not find column "TRANSACTION". Error in FILTER clause
    OGG-01519
    oracle RAC 监听状态为"Not All Endpoints Registered"
    ORA-01653: unable to extend table keep.ic_log by 128 in tablespace IDX_LOG
    mysql的binlog太多太大占用大量磁盘空间的解决方法
    启用mysql日志,记录执行过的sql
    定时挂载文件系统步骤
    error c2678 <
    TypeError:'dict' object is not callable
    用SendMessage发WM_COPYDATA消息
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5135445.html
Copyright © 2011-2022 走看看