Leet Code 515. Find Largest Value in Each Tree Row【一个stack记录层次】numeric——limits<int>max

来源:互联网 发布:运动健身软件 编辑:程序博客网 时间:2024/04/28 14:48

You need to find the largest value in each row of a binary tree.

Example:

Input:           1         / \        3   2       / \   \        5   3   9 Output: [1, 3, 9]

#include<iostream>#include<vector>#include<unordered_map>#include<queue>using namespace std; struct TreeNode {     int val;     TreeNode *left;     TreeNode *right;     TreeNode(int x) : val(x), left(NULL), right(NULL) {} };class Solution {public:int singleNumber(vector<int>& nums) {//方法1/*unordered_map<int, int> m;for (int i = 0; i < nums.size(); i++){if (m.find(nums[i]) != m.end()){m[nums[i]]++;}else{m.insert({ nums[i], 1 });}}unordered_map<int, int> ::iterator itr = m.begin();while (itr != m.end()){if (itr->second != 2)return itr->first;itr++; }*///方法2int result = 0;for (int i = 0; i < nums.size(); i++){result = result ^ nums[i];}return result;}vector<int> largestValues(TreeNode* root) {//queue<int>q1;queue<TreeNode> q2;q2.push(*root);//q1.push(1);vector<int> ans;while (!q2.empty()){int size = q2.size();int maxval = (numeric_limits<int>::min)();for (int i = 0; i < size; i++){TreeNode treetmp = q2.front();if (treetmp.val > maxval)maxval = treetmp.val;  q2.pop();//q1.pop();if (treetmp.left != NULL){q2.push(*treetmp.left);}if (treetmp.right != NULL){q2.push(*treetmp.right);}}ans.push_back(maxval);}return ans;}};int main(){Solution s;TreeNode n1(1);TreeNode n2(3);TreeNode n3(2);TreeNode n4(5);TreeNode n5(3);TreeNode n6(9);n1.left = &n2;n1.right = &n3;n2.left = &n4;n2.right = &n5;n3.right = &n6;vector<int> v = s.largestValues(&n1);return 0;}


0 0
原创粉丝点击