从根节点开始,依次将每一层的节点从左到右放入vector,current指向当前访问的节点,last指向当前层的最后一个节点。然后把每一层的所有节点值放入一个vector,访问当前层结束后,找出最大的元素放入result中。
class Solution {
public: vector<int> largestValues(TreeNode* root) { vector<int> result; if(root!=NULL) { vector<TreeNode* > vec; vec.push_back(root); int current=0; int last=1; while(current<vec.size()) { last=vec.size(); vector<int> vals; for(;current<last;current++) { vals.push_back(vec[current]->val); if(vec[current]->left!=NULL) vec.push_back(vec[current]->left); if(vec[current]->right!=NULL) vec.push_back(vec[current]->right); } int max=vals[0]; for(int i=1;i<vals.size();i++) { if(vals[i]>max) max=vals[i]; } result.push_back(max); } } return result; } };