题目描述:


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.

解题思路:

这个题不断遍历整棵树找到左子树就可以了。时间复杂度O(n)

答案详解:

/**


* Definition for a binary tree node.

* struct TreeNode {

*     int val;

*     TreeNode *left;

*     TreeNode *right;

*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}

* };

*/

class Solution {

public:

   int total = 0;

   void preorder(TreeNode* root)

   {

       if(root)

       {

           if( root->left==NULL && root->right==NULL )

               total = total + root->val;


           preorder(root->left);

           if(root->right!=NULL)

               if(root->right->left!=NULL || root->right->right !=NULL)

                   preorder(root->right);

       }

   }

   int sumOfLeftLeaves(TreeNode* root) {

       if(root&&root->right==NULL&&root->left==NULL)

           return 0;

       preorder(root);

       return total;

   }

};