题解 | #二叉树根节点到叶子节点的所有路径和#

二叉树根节点到叶子节点的所有路径和

https://www.nowcoder.com/practice/185a87cd29eb42049132aed873273e83

带返回值DFS

import java.util.*;

public class Solution {
    /**
     * 
     * @param root TreeNode类 
     * @return int整型
     */
    public int sumNumbers (TreeNode root) {
        // write code here
//         先序遍历
        if(root==null) return 0;
        int res = 0;
        return dfs(root,res);
    }
    public int dfs(TreeNode node,int res){
        if(node==null) return 0;
//         何时计算值,res*10?开始是0少乘1个
        if(node.left==null && node.right==null) return res*10+node.val;
//         压栈的时候,res值10倍扩大
        return dfs(node.left,res*10+node.val)+dfs(node.right,res*10+node.val);
    }
}

不带返回值DFS

public class Solution {
    /**
     * 
     * @param root TreeNode类 
     * @return int整型
     */
    int res = 0;
    public int sumNumbers (TreeNode root) {
        // write code here
//         先序遍历
        if(root==null) return 0;
        dfs(root,0);
        return res;
    }
//     必须要有一个局部遍历控制
    public void dfs(TreeNode node,int val){
        if(node==null) return;
//         一个递归内部不做累加,最后累加
        val = val *10+node.val;
        if(node.left==null && node.right==null) res+=val;
        dfs(node.left,val);
        dfs(node.right,val);
    }
}
全部评论

相关推荐

11-03 12:40
中山大学 Java
勇敢的突尼斯海怪选钝...:楼主这拒意向话术好得体呀 !求问HR回复态度咋样呀
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务