zoukankan      html  css  js  c++  java
  • 路径总和

    给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。

    说明: 叶子节点是指没有子节点的节点。

    示例: 
    给定如下二叉树,以及目标和 sum = 22,

    5
    /
    4 8
    / /
    11 13 4
    /
    7 2 1
    返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2。

    code:

    /**
     * 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:
        bool hasPathSum(TreeNode* root, int sum) {
            if(root==nullptr)//不能到空节点再判断:root->left==nullptr&&sum==0,因为这有可能是一个输入,要到叶子结点就判断,在叶子结点
                return false;
            else if(root->left==nullptr&&root->right==nullptr)
                return sum-root->val==0;
    
            sum-=root->val;
            bool leftRes=hasPathSum(root->left,sum);
            if(leftRes)
                return true;
            bool rightRes=hasPathSum(root->right,sum);
            return leftRes||rightRes;
        }
    };
  • 相关阅读:
    2017icpc青岛
    训练赛
    CF1598F
    CF1581
    CF1594
    CF1581D
    codeforces round 746 div2 C-E
    How I Think About Learning
    Linux Sysadmin Basics 4.1 -- Filtering Output and Finding Things (&&, cut, sort, uniq, wc, grep)
    Linux Sysadmin Basics 04 -- Shell Features -- Pipes and Redirection
  • 原文地址:https://www.cnblogs.com/tianzeng/p/12400906.html
Copyright © 2011-2022 走看看