【树】404. 左叶子之和

题目:

解法:

难点主要是在判断是否是左叶子。

 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 class Solution {
11 public:
12     int ans = 0;
13 
14     int sumOfLeftLeaves(TreeNode* root) 
15     {
16        leftNum(root);
17        return ans;
18     }
19 
20     void leftNum(TreeNode *root)
21     {
22         // 到达叶子返回
23         if (NULL == root)
24         {
25             return;
26         }
27 
28         // 判定某一个节点的左子树是否叶子节点, 就是将左子树的值增加到ans中(叶子节点没有左右子树)
29         if (NULL != root->left && (root->left->left == NULL && root->left->right == NULL))
30         {
31             ans += root->left->val;
32         }
33 
34         leftNum(root->left);
35         leftNum(root->right);
36     }
37 };

难点主要是在判断是否是左叶子

猜你喜欢

转载自www.cnblogs.com/ocpc/p/12821310.html