题解 | #二叉树中和为某一值的路径(一)#
二叉树中和为某一值的路径(一)
https://www.nowcoder.com/practice/508378c0823c423baa723ce448cbfd0c
- 递归 + 回溯
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类
* @param sum int整型
* @return bool布尔型
*/
bool hasPathSum(TreeNode* root, int sum) {
if (root == nullptr) return false;
return traversal(root, sum - root->val);
}
bool traversal(TreeNode* node, int count) {
// 到达叶子节点
if (node->left == nullptr && node->right == nullptr && count == 0) {
return true;
}
if (node->left == nullptr && node->right == nullptr && count != 0) {
return false;
}
if (node->left) {
count -= node->left->val;
// 向上返回
if (traversal(node->left, count)) {
return true;
}
count += node->left->val; // 回溯
}
if (node->right) {
count -= node->right->val;
// 向上返回
if (traversal(node->right, count)) {
return true;
}
count += node->right->val; // 回溯
}
return false;
}
};
2023-剑指-二叉树 文章被收录于专栏
2023-剑指-二叉树
查看12道真题和解析
OPPO公司福利 1243人发布