LeetCode No.112 Path Sum

来源:互联网 发布:uwp截图软件 编辑:程序博客网 时间:2024/05/17 23:58

Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.

For example:
Given the below binary tree and sum = 22,
              5             / \            4   8           /   / \          11  13  4         /  \      \        7    2      1

return true, as there exist a root-to-leaf path 5->4->11->2 which sum is 22.

====================================================================================
题目链接:https://leetcode.com/problems/path-sum/

题目大意:给定一个二叉树和一个sum,求二叉树中是否存在从根到叶子的路径和等于sum。

思路:使用递归计算方法,如上例:

1、头结点5对应的节点的sum值为22,则它的子节点4和8对应的sum值为22-5=17。

2、当找到当前节点为叶子并且该节点的数值跟其对应的sum相等的时候说明找到了,否则找不到。

附上代码:

/** * 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 == NULL )            return false ;        TreeNode* l = root -> left ;        TreeNode* r = root -> right ;        if ( l == NULL && r == NULL )        {            if ( sum == root -> val )                return true ;            return false ;        }        return hasPathSum ( l , sum - root -> val ) + hasPathSum ( r , sum - root -> val ) ;    }};


0 0
原创粉丝点击