题解 | #牛群特殊路径的数量# java

牛群特殊路径的数量

https://www.nowcoder.com/practice/1c0f95d8396a432db07945d8fe51a4f5

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 *   public TreeNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param root TreeNode类
     * @param sum int整型
     * @return int整型
     */
    int ans = 0;

    public int pathSum(TreeNode root, int sum) {
        if (root == null) {
            return 0;
        }
        preorder(root, sum);
        return ans;
    }

    public void preorder(TreeNode root, int sum) {
        if (root == null) {
            return;
        }
        dfs(root, sum);
        preorder(root.left, sum);
        preorder(root.right, sum);
    }

    public void dfs(TreeNode root, int sum) {
        if (root == null) {
            return;
        }
        sum -= root.val;
        if (sum == 0) {
            ans++;
        }
        dfs(root.left, sum);
        dfs(root.right, sum);
    }
}

语言是Java。

该题目考察的知识点是二叉树和递归算法。题目要求计算路径和等于给定值的路径数量。

以下是对代码的文字解释:

 pathSum 方法接收一个 TreeNode 类型的参数 root 和一个整型参数 sum,并返回一个整型结果。在 pathSum 方法中,首先检查当前节点是否为空,如果是,则返回 0。然后调用 preorder 方法进行前序遍历,并传入当前节点和目标值 sum。最后,返回 ans 变量的值,即路径和等于给定值的路径数量。在 preorder 方法中,首先检查当前节点是否为空,如果是,则返回。然后调用 dfs 方法进行深度优先搜索,并传入当前节点和目标值 sum。接着递归遍历左子树和右子树,分别调用 preorder 方法。在 dfs 方法中,首先检查当前节点是否为空,如果是,则返回。然后将目标值 sum 减去当前节点的值。如果 sum 减到了 0,表示找到了一条路径,将 ans 值加1。然后递归遍历左子树和右子树,分别调用 dfs 方法,传入更新后的目标值 sum。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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