zoukankan      html  css  js  c++  java
  • 23. Sum Root to Leaf Numbers

    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.

    思想: 分三种情况: 1. 当前结点为空,返回0.  2. 叶子结点, 返回当前值.  3. 父结点,返回左右两个 path 值的和。

    /**
     * Definition for binary tree
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
     int dfs(TreeNode *root, int sum) {
        if(root == 0) return 0;
        sum = sum * 10 + root->val;
        if(root->left || root->right) 
            return dfs(root->left, sum) + dfs(root->right, sum);
        return sum;
     }
    class Solution {
    public:
        int sumNumbers(TreeNode *root) {
            return dfs(root, 0);
        }
    };
    
  • 相关阅读:
    Go 解析JSON
    查看端口占用并结束进程
    DNS
    u盘禁用
    主机规划与磁盘分区
    响应式设计初识
    SVG基础
    BootStrap入门
    python中 "is"和"=="的区别
    关于C++模板不能分离编译的问题思考
  • 原文地址:https://www.cnblogs.com/liyangguang1988/p/3938466.html
Copyright © 2011-2022 走看看