struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x): val(x), left(NULL), right(NULL) {}
};
class Solution {
public:
int count = 0;
int pathSum(TreeNode* root, int sum) {
if (root == NULL) return count;
dfs(root, sum);
pathSum(root->left, sum);
pathSum(root->right, sum);
return count;
}
void dfs(TreeNode* root, int sum) {
if (root == NULL) {
return;
}
int num = 0;
sum -= root->val;
if (sum == 0) {
count++;
}
dfs(root->left, sum);
dfs(root->right, sum);
}
};
int main() {
TreeNode root = TreeNode(5);
TreeNode left1 = TreeNode(4);
TreeNode right1 = TreeNode(8);
root.left = &left1;
root.right = &right1;
TreeNode left12 = TreeNode(11);
left1.left = &left12;
TreeNode left2 = TreeNode(13);
TreeNode right12 = TreeNode(4);
right1.left = &left2;
right1.right = &right12;
TreeNode left123 = TreeNode(7);
TreeNode right123 = TreeNode(2);
left12.left = &left123;
left12.right = &right123;
TreeNode left3 = TreeNode(5);
TreeNode right3 = TreeNode(1);
right12.left = &left3;
right12.right = &right3;
Solution s;
cout << s.pathSum(&root, 22) << endl;
}
二叉树本地调试范例
最新推荐文章于 2023-03-31 19:45:24 发布