Leetcode404. 左叶子之和(C语言)
数据结构-树:算法与数据结构参考
题目:
计算给定二叉树的所有左叶子之和。例:
*输入:[3,9,20,null,null,15,17]
输出:24
思路:
找出左叶子(需要判断是否为叶子节点),累加。
代码:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool isLeaf(struct TreeNode* root){ //判断是否为叶子节点
if(!root) return false;
return !root->left && !root->right;
}
int sumOfLeftLeaves(struct TreeNode* root){
if(!root) return 0; //每次先判断,不会有用空指针报错
if(isLeaf(root->left))
return root->left->val + sumOfLeftLeaves(root->right);
//将左叶子的值累加
return sumOfLeftLeaves(root->left) +sumOfLeftLeaves(root->right);
}