题目
计算给定二叉树的所有左叶子之和。
题目链接
示例
3
/
9 20
/
15 7
在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
题目分析
此题目是树的题目中的基础题,只需要遍历一次树,找到左叶子结点,记录左叶子结点的值,即可。
本题中我使用的是前序遍历,前序遍历就是按照根节点->左孩子结点—>右孩子结点的顺序遍历树。树的前序遍历一般可以写为:
void PreOrder(tree root){
visit(root);
PreOrder(root->left);
PreOrder(root->right);
}
题目解答
typedef struct TreeNode* tree;
int PreOrder(tree root, int res){
if (root == NULL) return res;
if (root->left != NULL && root->left->left == NULL && root->left->right == NULL){
res += root->left->val;
}
res = PreOrder(root->left, res);
res = PreOrder(root->right, res);
return res;
}
int sumOfLeftLeaves(struct TreeNode* root){
return PreOrder(root, 0);
}