zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    java基础--13.Regex正则表达式
    java基础面试题12--Integer--自动拆装箱
    java基础面试题11--String--最大公共子串
    笔记本wif模块接线备忘
    windows环境下gcc/g++ 编译器 乱码问题解决
    转轮加密机 加解密 (C语言实现)
    windbg
    windows 内核调试
    python源码编译(嵌入式)
    Android studio
  • 原文地址:https://www.cnblogs.com/mr-stn/p/8944530.html
Copyright © 2011-2022 走看看