计算给定二叉树的所有左叶子之和。
题解
深搜
遍历节点
判定是否为左叶子节点
if (node->left && !node->left->left && !node->left->right)
用了个全局sum记录左子树之和
需要先遍历右子树 再判定是否为左叶子节点 再遍历左子树
class Solution {
public:
int sum;
int sumOfLeftLeaves(TreeNode* root) {
if (!root) return 0;
sum = 0;
DFS(root);
return sum;
}
void DFS(TreeNode *node) {
if(!node->left && !node->right) return;
if (node->right) {
DFS(node->right);
}
if (node->left && !node->left->left && !node->left->right) {
sum += node->left->val;
return;
}
if (node->left) {
DFS(node->left);
}
}
};