给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。
叶子节点 是指没有子节点的节点。
bool hasPathSum(struct TreeNode* root, int targetSum){
if(root==NULL){
return false;
}
if(root->left==NULL&&root->right==NULL){
return targetSum == root->val;
}
return hasPathSum(root->left,targetSum-root->val) || hasPathSum(root->right,targetSum-root->val);
}
终于刷到树状图题目了,解题思路与普通链表题相差不大;
但是在设计算法时需要注意是使用深度优先,还是宽度优先;
具体看题再定,这里我使用是的递归思路;
因为这个比较简单,写得少,而且易理解;
或者也可以用宽度优先算法,一层层遍历,并且每次都加上判断;