404. Sum of Left Leaves 解题记录

2017-11-17 08:06:21来源:cnblogs.com作者:宵夜0000人点击

分享

题目描述:

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

例子:

    3   / /  9  20    /  /   15   7There 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         else24         {25                 leftLeavesSum += sumOfLeftLeaves(root->left);26             }27         }28     if (root->right)29         {30             leftLeavesSum += sumOfLeftLeaves(root->right);31         }32     return leftLeavesSum;33 }

解题收获:

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

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台