• [LeetCode] 129. 求根到叶子节点数字之和


    题目链接 : https://leetcode-cn.com/problems/sum-root-to-leaf-numbers/

    题目描述:

    给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。

    例如,从根到叶子节点路径 1->2->3 代表数字 123。

    计算从根到叶子节点生成的所有数字之和。

    说明: 叶子节点是指没有子节点的节点。

    示例:

    示例 1:

    输入: [1,2,3]
        1
       / 
      2   3
    输出: 25
    解释:
    从根到叶子节点路径 1->2 代表数字 12.
    从根到叶子节点路径 1->3 代表数字 13.
    因此,数字总和 = 12 + 13 = 25.
    

    示例 2:

    输入: [4,9,0,5,1]
        4
       / 
      9   0
     / 
    5   1
    输出: 1026
    解释:
    从根到叶子节点路径 4->9->5 代表数字 495.
    从根到叶子节点路径 4->9->1 代表数字 491.
    从根到叶子节点路径 4->0 代表数字 40.
    因此,数字总和 = 495 + 491 + 40 = 1026.
    

    思路:

    没什么好说的, DFS遍历

    只不过遍历时候可以记录成字符串(Python 写)

    也可以a * 10 + b (Java 写)

    都是一样的

    代码:

    def sumNumbers(self, root: TreeNode) -> int:
            self.res = 0
            def helper(root, tmp):
                if not root: return 
                if not root.left and not root.right:
                    self.res += int(tmp + str(root.val))
                    return   
                helper(root.left, tmp + str(root.val))
                helper(root.right, tmp + str(root.val))
            helper(root, "")
            return self.res
    

    java

    class Solution {
        int res = 0;
    
        public int sumNumbers(TreeNode root) {
    
            helper(root, 0);
            return res;
        }
    
        private void helper(TreeNode root, int tmp) {
            if (root == null) return;
            if (root.left == null && root.right == null) res += (tmp * 10 + root.val);
            helper(root.left, tmp * 10 + root.val);
            helper(root.right, tmp * 10 + root.val);
        }
    }
    
  • 相关阅读:
    CSS3 实现六边形Div图片展示效果
    自己编写jQuery插件 之 放大镜
    自己编写jQuery插件 之 无缝滚动
    C#装箱拆箱
    C#基础知识
    数据库锁
    SQL2008中Merge的用法
    SQl去获取相同记录
    判断DataRow中是否包含某列
    Quartz中时间表达式的设置-----corn表达式
  • 原文地址:https://www.cnblogs.com/powercai/p/11181684.html
Copyright © 2020-2023  润新知