LeetCode 404. Sum of Left Leaves

404. Sum of Left Leaves

Description

Find the sum of all left leaves in a given binary tree.

Example:

    3
   / \
  9  20
    /  \
   15   7

There are two left leaves in the binary tree, with values 9 and 15 respectively. Return 24.

Solution

  • 题意即求和作为左子树的叶子结点的值。
  • 整体解题思想是遍历但是不遍历右叶子,如果当前是叶子结点,那么一定是左叶子,那么累和。
  • 我采用的是中序遍历的方式,对于左子树遍历,可以放心大胆,因为不会遍历到右叶子,然后判断当前根节点,如果是叶子那么累和,对于右子树遍历,需要确认该右子树不是叶节点才能继续遍历,代码如下。
class Solution {
public:
    int rnt = 0;
    void travel(TreeNode *root)  {
        if (!root) return ;
        travel(root->left);
        if (!root->left && !root->right) rnt += root->val;
        if ((root->right) && (root->right->left || root->right->right)) travel(root->right);
    }
    int sumOfLeftLeaves(TreeNode* root) {

        if (!root || (!root->left && !root->right)) return 0;
        travel(root);
        return rnt;
    }
};
发布了77 篇原创文章 · 获赞 5 · 访问量 2万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章