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; } };