题目
计算给定二叉树的所有左叶子之和。
示例:
3
/ \
9 20
/ \
15 7
在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sum-of-left-leaves
思路
判定左叶子的条件是:
1、没有子节点;
2、其母节点的左节点;
满足条件的值返回即可。
程序
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
/*root 表示传入节点
flag 表示为左右, 0为左 1为右
*/
int GetLeftLeaveSum(struct TreeNode* root, int flag){
int ileft, iright;
/*为空则返回0*/
if(root == NULL)
return 0;
/*为左叶子节点则返回节点值*/
if(root->left == NULL && root->right == NULL && flag == 0)
return root->val;
ileft = GetLeftLeaveSum(root->left,0);
iright = GetLeftLeaveSum(root->right,1);
return ileft + iright;
}
int sumOfLeftLeaves(struct TreeNode* root){
struct TreeNode* node = NULL;
/*根节点不是左节点,标志传1*/
return GetLeftLeaveSum(root,1);
}