LeetCode_二叉树_DFS_中等_129.求根节点到叶节点数字之和

绝地灬酷狼 2023-10-12 11:51 137阅读 0赞

目录

  • 1.题目
  • 2.思路
  • 3.代码实现(Java)

1.题目

给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。
每条从根节点到叶节点的路径都代表一个数字:例如,从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123。
计算从根节点到叶节点生成的所有数字之和 。

叶节点是指没有子节点的节点。

示例 1:

在这里插入图片描述

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

示例 2:

在这里插入图片描述

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

提示:
树中节点的数目在范围 [1, 1000] 内
0 <= Node.val <= 9
树的深度不超过 10

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/sum-root-to-leaf-numbers

2.思路

(1)DFS

相关题目:
LeetCode_二叉树_中等_113.路径总和 II

3.代码实现(Java)

  1. //思路1————DFS
  2. /**
  3. * Definition for a binary tree node.
  4. * public class TreeNode {
  5. * int val;
  6. * TreeNode left;
  7. * TreeNode right;
  8. * TreeNode() {}
  9. * TreeNode(int val) { this.val = val; }
  10. * TreeNode(int val, TreeNode left, TreeNode right) {
  11. * this.val = val;
  12. * this.left = left;
  13. * this.right = right;
  14. * }
  15. * }
  16. */
  17. class Solution {
  18. StringBuilder builder = new StringBuilder();
  19. int res = 0;
  20. public int sumNumbers(TreeNode root) {
  21. dfs(root);
  22. return res;
  23. }
  24. private void dfs(TreeNode root) {
  25. if (root == null) {
  26. return;
  27. }
  28. builder.append(root.val);
  29. if (root.left == null && root.right == null) {
  30. res += Integer.parseInt(builder.toString());
  31. }
  32. dfs(root.left);
  33. dfs(root.right);
  34. builder.deleteCharAt(builder.length() - 1);
  35. }
  36. }

发表评论

表情:
评论列表 (有 0 条评论,137人围观)

还没有评论,来说两句吧...

相关阅读