leetcode 515. Find Largest Value in Each Tree Row

    xiaoxiao2021-04-14  68

    Hi,又见面了~第二天,难度和之前差不多。

    515. Find Largest Value in Each Tree Row

    一.犯的错误

    (1)逻辑上的问题都是在调试中发现的,比如这题在没加最后一句push_back的时候,发现输出只有2层的输出,最后一层没输出。然后才发现是最后一个if没走到,所以加了一个push_back

    二。 初始max的赋值我naive的认为初始化-1000000够小了,然而输入数据给的竟然是-几十亿。。。所以逻辑理清,max初始赋值为根节点就好啦~其实是比较简单的问题,可以发现~

    三. 代码如下

    /**  * 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<int> largestValues(TreeNode* root) {         vector <int> result;         queue <TreeNode *> q;         queue <int> qlevel;                  TreeNode * temp;         int i,level;         q.push(root);         qlevel.push(0);         int m=0;         int max;         if(!root)    //最后有个空输入,所以判断一下否则过不去             return result;         max=root->val;    //果然厉害~输入数据是负几十亿。。 我当时初始化max为-100000,naive         while(q.size())         {             temp = q.front();             q.pop();             level = qlevel.front();             qlevel.pop();             //cout<<temp->val<<level<<endl;                          if(temp->left)             {                 q.push(temp->left);                 qlevel.push(level+1);             }             if(temp->right)             {                 q.push(temp->right);                 qlevel.push(level+1);             }             if(level==m)             {                 if(temp->val>max)                 {                     max = temp->val;                 }             }             if(level>m)             {                 m = level;                 result.push_back(max);                 max = temp->val;//这里max重新赋值为新一层的第一个节点的值             }                      }         result.push_back(max);//因为在处理最后一个锇元素后退出,没有到达最后一个if,也就是max值没有更新到result中     //于是最后再加一个push_back         return result;     } };

    转载请注明原文地址: https://ju.6miu.com/read-670141.html

    最新回复(0)