404. Sum of Left Leaves 解题记录

2018-06-18 03:57:14来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

题目描述:

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语言链表的使用还是有些不够熟练,还需要多加练习。

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Leetcode刷题

下一篇:快速排序