1302. 层数最深叶子节点的和
给你一棵二叉树,请你返回层数最深的叶子节点的和。
示例:
输入:root = [1,2,3,4,5,null,6,7,null,null,null,null,8]
输出:15
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/deepest-leaves-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解答:由102题思路对二叉树进行层次遍历,遍历得到的数组最后一个元素的和即为结果。但是这种如果树很高的话,耗时会很高。先附上代码
/** * 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: vector<vector<int>> levelOrder(TreeNode* root){ vector<vector<int>> res; if(!root) return res; queue<TreeNode*> qu; qu.push(root); while(!qu.empty()){ vector<int> tmp; int len=qu.size(); for(int i=0;i<len;++i){ TreeNode *node=qu.front(); tmp.push_back(node->val); qu.pop(); if(node->left) qu.push(node->left); if(node->right) qu.push(node->right); } res.push_back(tmp); } return res; } int deepestLeavesSum(TreeNode* root) { int sum=0; vector<vector<int>> ans1=levelOrder(root); int len1=ans1.size(); vector<int> ans=ans1[len1-1]; int len=ans.size(); for(int i=0;i<len;++i){ sum+=ans[i]; } return sum; } };