题目:
解法:
难点主要是在判断是否是左叶子。
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Solution { 11 public: 12 int ans = 0; 13 14 int sumOfLeftLeaves(TreeNode* root) 15 { 16 leftNum(root); 17 return ans; 18 } 19 20 void leftNum(TreeNode *root) 21 { 22 // 到达叶子返回 23 if (NULL == root) 24 { 25 return; 26 } 27 28 // 判定某一个节点的左子树是否叶子节点, 就是将左子树的值增加到ans中(叶子节点没有左右子树) 29 if (NULL != root->left && (root->left->left == NULL && root->left->right == NULL)) 30 { 31 ans += root->left->val; 32 } 33 34 leftNum(root->left); 35 leftNum(root->right); 36 } 37 };
难点主要是在判断是否是左叶子