2022-8-14 剑指offer-二叉树递归

剑指 Offer II 049. 从根节点到叶节点的路径数字之和

难度中等

给定一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。

每条从根节点到叶节点的路径都代表一个数字:

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

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

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

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

思路:dfs树,到叶子节点记录这条路的值。

posted on 2022-08-14 10:37  阿ming  阅读(12)  评论(0编辑  收藏  举报

导航