题目理解起来很简单的一道题 数中如果有一道走到底的路径的和等于目标数就返回true 否则我们返回false
在树的题目下 毫无疑问我们会第一时间想到递归解决
但在这道题中我们是比较难的记住一个sum值 因为在每一次的递归过程中我们都会重新创造一个新的临时变量
然后我们就不得不提这道题解题思路的精妙之处了 我们可以只判断叶子节点是否等于targetsum减前面的节点的val值 这样我们只用判断最后一个叶子节点的值就可以了 而不用大费周章的计算总和了(虽然也是变向的计算了sum的值)
所以我们就可以写出以下的代码了
bool 函数名(树的指针类型 root)
{
if(root==nullptr)return false;(因为在我们主体的判断中并不会判断到叶子节点之后的节点,所以这种情况只有一个 就是这个树完全都是空的时候 自然而然我们会返回false)
if(root->left==nullptr&&root->right==nullptr)return root->val==targetsum;
(因为叶子节点的左右子树都是nullptr所以进行判断,在前面我们会多次进行递归减去每一次root->val )
return 函数名(数的指针类型 root->left,targer-root->val)
||函数名(树的指针类型root->right,targetsum-root->val);
game over!
2023-04-06 23.27