天天看點

找出樹中每行的最大值

你需要找到在一棵二叉樹中,每一行的最大值

樣例

樣例 1:

輸入:
{1,3,2,5,3,#,9}
輸出:
[1,3,9]

解釋:
     1
   /    \
  3     2
 /   \     \
5    3      9
           

樣例 2:

輸入:
{1,2,3,4,5,6,#,#,7}
輸出:
[1,3,6,7]

解釋:
           1
        /     \
     2         3
   /  \      /
 4    5   6
  \
   7
           
/**
 * Definition of TreeNode:
 * class TreeNode {
 * public:
 *     int val;
 *     TreeNode *left, *right;
 *     TreeNode(int val) {
 *         this->val = val;
 *         this->left = this->right = NULL;
 *     }
 * }
 */

class Solution {
public:
    /**
     * @param root: a root of integer
     * @return: return a list of integer
     */
    vector<int> largestValues(TreeNode * root) {
        // write your code here
        vector<int> result;
        if (root == NULL) {
            return result;
        }
        
        queue<TreeNode *> Q;
        Q.push(root);
        while (!Q.empty()) {
            int size = Q.size();
            //vector<int> level;
            int mymax = INT_MIN;
            for (int i = 0; i < size; i++) {
                TreeNode *head = Q.front(); Q.pop();
                //level.push_back(head->val);
                mymax = max(mymax, head->val);
                if (head->left != NULL) {
                    Q.push(head->left);
                }
                if (head->right != NULL) {
                    Q.push(head->right);
                }
            }
            result.push_back(mymax);
            
            
        }
        
        return result;
    }
};