In this Leetcode Find Largest Value in Each Tree Row problem solution Given the root of a binary tree, return an array of the largest value in each row of the tree (0-indexed).

Leetcode Find Largest Value in Each Tree Row problem solution

Problem solution in Python.

class Solution(object):
    def largestValues(self, root):
        :type root: TreeNode
        :rtype: List[int]
        arr = []
        def search(node, depth):
            if not node: return
            if len(arr) < depth + 1:
                arr[depth] = max(arr[depth], node.val)
            search(node.left, depth + 1)
            search(node.right, depth + 1)
        search(root, 0)
        return arr

Problem solution in Java.

class Solution {
    public List<Integer> largestValues(TreeNode root) {
        List<Integer> ret = new ArrayList<>();
        if(root==null) return ret;
        Queue<TreeNode> q = new LinkedList<>();
        int max = 0;
        int size = 1;
            size = q.size();
            max = Integer.MIN_VALUE;
            for(int i = 0; i < size; i++){
                TreeNode n = q.poll();
                if(n.val > max) max = n.val;
                if(n.left!=null) q.add(n.left);
                if(n.right!=null) q.add(n.right);
        return ret;

Problem solution in C++.

class Solution {
    void rowLargest(TreeNode* node, int lvl, map<int, int>& god){
        if(!node) return ;
        if(!god.count(lvl)) god[lvl] = node->val;
        else god[lvl] = max(node->val, god[lvl]);
        rowLargest(node->left, lvl+1, god);
        rowLargest(node->right, lvl+1, god);
    vector<int> largestValues(TreeNode* root) {
        map<int, int> rowgod;
        rowLargest(root, 0, rowgod);
        vector<int> ans;
        for(auto &it: rowgod) ans.push_back(it.second);
        return ans;