• leeCode 515 在每个树行中找最大值


    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]

    题目意思:找出每一行的最大值
    解题思路:1.将当前行的结点放在一个数组中, 然后将当前行的下一行的所有结点放在另外一个数组中,这样可以遍历每一行的结点
         2.当当前行的结点遍历完之后, 找出每一行的最大值
    3.中止条件是当前行的结点个数为0
    注意事项:
       1.根结点可能为null
     1 #include<queue>
     2 #include<algorithm>
     3 class Solution {
     4     
     5 public:
     6     static bool cmp(TreeNode* a, TreeNode* b){
     7         return a->val > b->val;
     8     }//按照val的值升序排序
     9     vector<int> largestValues(TreeNode* root) {
    10         //p用来保存当前行的结点
    11        vector<TreeNode*> p;
    12         p.push_back(root);
    13         //放入根节点的val,当根节点为null时,不放入
    14         vector<int> ans;
    15         if(root) ans.push_back(root->val);
    16         //死循环。当当前行的下一行全为null的时候退出
    17         while(true){
    18             vector<TreeNode*> q;
    19             int len = p.size();
    20             //将当前行的所有结点的下一个结点放在q内
    21             while(len){
    22                 TreeNode* temp = p[len-1];
    23                 if(temp == NULL) break;
    24                 len--;
    25                 if(temp->left) q.push_back(temp->left);
    26                 if(temp->right) q.push_back(temp->right);
    27             }
    28             p = q;
    29             sort(q.begin(), q.end(), cmp);
    30             if(p.empty()) break;
    31             ans.push_back(q[0]->val);
    32         }
    33         return ans;
    34     }
    35 };

    有疑惑或者更好的解决方法的朋友,可以联系我,大家一起探讨。qq:1546431565
  • 相关阅读:
    jmeter循环发送http请求
    判断字符串是否为日期格式
    正则表达式的部分替换 $1~$99
    js验证上传文件大小
    mongodb主从备份 和 手动主从切换
    openproject安装与使用
    软件项目开发常见错误
    使用selenium的WebDriver和ChromeDriver实现UI自动化
    shell ssh远程执行命令
    Flask入门
  • 原文地址:https://www.cnblogs.com/mr-stn/p/8944530.html
Copyright © 2020-2023  润新知