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<>(); q.add(root); 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; if(n.left!=null) q.add(n.left); if(n.right!=null) q.add(n.right); } ret.add(max); } 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; } };