题目:
给定二叉树的根节点 root
,返回所有左叶子之和。
示例 1:
输入: root = [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
示例 2:
输入: root = [1] 输出: 0
这个还是很简单的只要抓住左叶子的要点
判断当前节点是不是左叶子是无法判断的,必须要通过节点的父节点来判断其左孩子是不是左叶子。
如果该节点的左节点不为空,该节点的左节点的左节点为空,该节点的左节点的右节点为空,则找到了一个左叶子
注意点:如果用cur->left == null && cur->right == null作为判断结束条件的话
在进入递归函数是需要加一个if判断是否为空
如果用cur==null来作为结束条件就不用了
代码如下:
class Solution {
public:
int sum = 0;
void order(TreeNode* cur)
{
if(cur -> left== nullptr&&cur->right == nullptr)return;
if(cur -> left != nullptr && cur -> left -> left == nullptr && cur->left->right == nullptr)
{
sum += cur->left->val;
}
if(cur->left)order(cur->left);
if(cur->right)order(cur->right);
}
int sumOfLeftLeaves(TreeNode* root)
{
order(root);
return sum;
}
};