• 刷题力扣面试题 04.12. 求和路径


    题目链接

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/paths-with-sum-lcci
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    题目描述

    给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下(只能从父节点指向子节点方向)。

    示例:

    给定如下二叉树,以及目标和 sum = 22,
    
                  5
                 / \
                4   8
               /   / \
              11  13  4
             /  \    / \
            7    2  5   1
    返回:
    
    3
    解释:和为 22 的路径有:[5,4,11,2], [5,8,4,5], [4,11,7]
    

    提示:

    • 节点总数 <= 10000

    题目分析

    1. 根据题目描述计算二叉树中路径和等于目标值的路径数量
    2. 以树中每个节点为起点,做深度优先搜索遍历

    代码

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        int pathSum(TreeNode* root, int sum) {
            if (!root) { return 0; }
            return dfs(root, sum) + pathSum(root->left, sum) + pathSum(root->right, sum);
        }
    
    private:
        int dfs(TreeNode* root, int sum) {
            if (!root) { return 0; }
            sum -= root->val;
            if (sum == 0) { return 1 + dfs(root->left, sum) + dfs(root->right, sum); }
            else { return dfs(root->left, sum) + dfs(root->right, sum); }
        }
    
    };
    
  • 相关阅读:
    NumPy 字符串函数
    NumPy 位运算
    Numpy 数组操作
    最小二乘法的原理与计算
    NumPy 迭代数组
    Making AJAX Applications Crawlable
    mac, start sublime from terminal
    Speed Up Your WordPress Site
    To Support High-Density Retina Displays
    HTML5 tricks for mobile
  • 原文地址:https://www.cnblogs.com/HanYG/p/15908861.html
Copyright © 2020-2023  润新知