https://leetcode.com/problems/deepest-leaves-sum/
1. Use recursion:
//48 ms 28.7 MB/*** 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 deepestLeavesSum(TreeNode* root) {if(!root) return 0;int result = 0;int max_depth = maxLeave(root, 0);deepestLeavesSum(root, 0, result, max_depth);return result;}private:int maxLeave(TreeNode* root, int depth){if(!root) return depth - 1;int d_l = maxLeave(root->left, depth + 1);int d_r = maxLeave(root->right, depth + 1);return max(depth, max(d_l, d_r) );}void deepestLeavesSum(TreeNode* root, int depth, int& result, int max_depth) {if(!root) return;deepestLeavesSum(root->left, depth + 1, result, max_depth);deepestLeavesSum(root->right, depth + 1, result, max_depth);//cout << depth << " " << root->val << endl;//cout << max_depth << " " << (depth == max_depth) << endl;if(depth == max_depth){result += root->val;return;}}};
