思路:
https://www.bilibili.com/video/BV1GY4y1K7z8/?vd_source=cc3333a27046bad449a2b6818cc4149c
感觉挺难想的,都是根据上层推导过来的
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x):val(x),left(NULL),right(NULL){}
};
class Solution {
public:
int TreeNodeSum(TreeNode* root) {
if (root == NULL)return 0;
if (root->left == NULL && root->right == NULL)return 0;
int leftsum = TreeNodeSum(root->left);
if (root->left != NULL && root->left->left == NULL && root->left->right == NULL) {
leftsum = root->left->val;
}
int rightsum = TreeNodeSum(root->right);
return leftsum + rightsum;
}
};
int main() {
TreeNode* A = new TreeNode(3);
TreeNode* B = new TreeNode(9);
TreeNode* C = new TreeNode(20);
TreeNode* D = new TreeNode(15);
TreeNode* E = new TreeNode(17);
A->left = B;
A->right = C;
C->left = D;
C->right = E;
Solution ss;
cout << ss.TreeNodeSum(A) << endl;
return 0;
}