# Leetcode Find Largest Value in Each Tree Row problem solution

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).

## 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.append(node.val)
else:
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;

while(!q.isEmpty()){
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;
}
}
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);
}

public:
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;
}
};```