zoukankan      html  css  js  c++  java
  • Leecode刷题之旅-C语言/python-112 路径总和

    /*
     * @lc app=leetcode.cn id=112 lang=c
     *
     * [112] 路径总和
     *
     * https://leetcode-cn.com/problems/path-sum/description/
     *
     * algorithms
     * Easy (45.08%)
     * Total Accepted:    12.4K
     * Total Submissions: 27.5K
     * Testcase Example:  '[5,4,8,11,null,13,4,7,2,null,null,null,1]
    22'
     *
     * 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。
     * 
     * 说明: 叶子节点是指没有子节点的节点。
     * 
     * 示例: 
     * 给定如下二叉树,以及目标和 sum = 22,
     * 
     * ⁠             5
     * ⁠            / 
     * ⁠           4   8
     * ⁠          /   / 
     * ⁠         11  13  4
     * ⁠        /        
     * ⁠       7    2      1
     * 
     * 
     * 返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2。
     * 
     */
    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     struct TreeNode *left;
     *     struct TreeNode *right;
     * };
     */
    bool hasPathSum(struct TreeNode* root, int sum) {
        if(root==NULL){
            return false;
        }
        if(root->left==NULL&&root->right==NULL){
            return root->val==sum;
        }
        return hasPathSum(root->left,sum-root->val)||
                hasPathSum(root->right,sum-root->val);
    }

    这里进行迭代,每次都用sum减去左子树或是右子树的值。

    #
    # @lc app=leetcode.cn id=112 lang=python3
    #
    # [112] 路径总和
    #
    # https://leetcode-cn.com/problems/path-sum/description/
    #
    # algorithms
    # Easy (45.08%)
    # Total Accepted:    12.4K
    # Total Submissions: 27.5K
    # Testcase Example:  '[5,4,8,11,null,13,4,7,2,null,null,null,1]
    22'
    #
    # 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。
    # 
    # 说明: 叶子节点是指没有子节点的节点。
    # 
    # 示例: 
    # 给定如下二叉树,以及目标和 sum = 22,
    # 
    # ⁠             5
    # ⁠            / 
    # ⁠           4   8
    # ⁠          /   / 
    # ⁠         11  13  4
    # ⁠        /        
    # ⁠       7    2      1
    # 
    # 
    # 返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2。
    # 
    #
    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution:
        def hasPathSum(self, root: TreeNode, sum: int) -> bool:
            if not root:
                return False
            if not root.left and not root.right and root.val == sum:
                return True
            sum -= root.val
            return self.hasPathSum(root.left, sum) or self.hasPathSum(root.right, sum)
  • 相关阅读:
    hihoCoder 1398 : 网络流五·最大权闭合子图
    hihoCoder:1394 : 网络流四·最小路径覆盖
    hihoCoder 1393: 网络流三·二分图多重匹配
    hihoCoder1378:网络流二·最大流最小割定理
    hihoCoder1369:网络流一·Ford-Fulkerson算法(FF算法)
    [NOIP2011]铺地毯(贪心)
    hdu 3452:Bonsai(最小割)
    hdu 3549:Flow Problem(最大流)
    (转载)JavaScript中定义变量
    (转载)浅谈javascript的分号
  • 原文地址:https://www.cnblogs.com/lixiaoyao123/p/10570826.html
Copyright © 2011-2022 走看看