Leetcode404. 左叶子之和(C语言)

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);
}
发布了42 篇原创文章 · 获赞 0 · 访问量 597

猜你喜欢

转载自blog.csdn.net/jeanlu/article/details/104296230
今日推荐