1.左叶子之和
思路一:DFS
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
bool isLeafNode(TreeNode* node) {
return !node->left && !node->right;
}//判断是不是叶子结点
int dfs(TreeNode* node) {
int ans = 0;
if (node->left) {
ans += isLeafNode(node->left) ? node->left->val : dfs(node->left);//找到叶子结点就加一个值,否则继续往左找
}//左面递归寻找
if (node->right && !isLeafNode(node->right)) {
ans += dfs(node->right);
}//右面递归寻找
return ans;
}
int sumOfLeftLeaves(TreeNode* root) {
return root ? dfs(root) : 0;
}
};
京公网安备 11010502036488号