• 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)
  • 相关阅读:
    第二冲刺阶段第十四天
    第二冲刺阶段第十三天
    第二冲刺阶段第十二天
    第二冲刺阶段第十一天
    典型用户分析
    课后作业——搜狗输入法
    spring第二冲刺阶段第十五天
    spring第二冲刺阶段第十四天
    spring第二冲刺阶段第十三天
    spring第二冲刺阶段第十二天
  • 原文地址:https://www.cnblogs.com/lixiaoyao123/p/10570826.html
Copyright © 2020-2023  润新知