题解 | #二叉树中和为某一值的路径(一)#

二叉树中和为某一值的路径(一)

https://www.nowcoder.com/practice/508378c0823c423baa723ce448cbfd0c

思路

使用深度优先遍历来计算路径长度

代码

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */

public class Solution {
    /**
     * @param root TreeNode类
     * @param sum  int整型
     * @return bool布尔型
     */
    public boolean hasPathSum(TreeNode root, int sum) {
        if (root == null) {
            return false;
        }
        // 设置初始值
        int value = 0;
        return hasPathSum(root, value, sum);
    }

    /**
     * 使用深度优先遍历计算路径值
     *
     * @param root  根节点
     * @param value 路径值
     * @param sum   目标值
     * @apiNote
     * @since 2022/12/31 13:07
     */
    public boolean hasPathSum(TreeNode root, int value, int sum) {
        // 将当前值加入路径值中
        value += root.val;
        // 判断当前节点是否为子节点,如果是,则进行比较
        if (root.left == null && root.right == null) {
            return value == sum;
        }
        boolean leftResult = false;
        boolean rightResult = false;
        // 当前节点不是子节点(n1,n2)
        if (root.right != null) {
            rightResult = hasPathSum(root.right, value, sum);
        }
        if (root.left != null) {
            leftResult = hasPathSum(root.left, value, sum);
        }
        return rightResult || leftResult;
    }
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务