题目描述:

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

例子:

 

    3
   / 
  9  20
    /  
   15   7

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

 

解题思路:

用递推对二叉树进行遍历,判断是否为末枝的左子叶,然后将所有的末枝的左子叶相加(不要忘了考虑空指针的情况)

代码:

 

 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     struct TreeNode *left;
 6  *     struct TreeNode *right;
 7  * };
 8  */
 9 int sumOfLeftLeaves(struct TreeNode* root) {
10     if (!root)
11     //输入为空指针时
12     {
13         return 0;
14     }
15     int leftLeavesSum = 0;
16     if (root->left)
17     {
18         if (!root->left->left && !root->left->right)
19         //结束的条件也就是末枝的左子叶时
20         {
21             leftLeavesSum += root->left->val;
22         }
23         else
24         {
25                 leftLeavesSum += sumOfLeftLeaves(root->left);
26             }
27         }
28     if (root->right)
29         {
30             leftLeavesSum += sumOfLeftLeaves(root->right);
31         }
32     return leftLeavesSum;
33 }

 

解题收获:

对于C语言链表的使用还是有些不够熟练,还需要多加练习。

 

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!