给你二叉树的根节点 root
和一个表示目标和的整数 targetSum
。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum
。如果存在,返回 true
;否则,返回 false
。
叶子节点 是指没有子节点的节点。
思路一:递归
bool hasPathSum(struct TreeNode *root, int sum) {
if (root == NULL) {
return false;
}
if (root->left == NULL && root->right == NULL) {
return sum == root->val;
}
return hasPathSum(root->left, sum - root->val) ||
hasPathSum(root->right, sum - root->val);
}
分析:
本题要判断是否根节点到叶子节点的值之和等于目标数,可以使用递归将目标数不断减去中间路径二叉树所在位置的值,最后当遍历到空节点时判断数是否等于减过的目标数,最后返回答案,注意每个叶子节点都有可能存在路径,左右子树得到结果用||连接文章来源:https://www.toymoban.com/news/detail-693375.html
总结:
本题考察递归二叉树的操作,利用递归向左右子树遍历直到叶子节点,再判断是否路径总和为目标值得到答案文章来源地址https://www.toymoban.com/news/detail-693375.html
到了这里,关于leetcode做题笔记112. 路径总和的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!