515. Find Largest Value in Each Tree Row
阿新 • • 發佈:2020-08-15
package LeetCode_515 import java.util.* import kotlin.collections.ArrayList /** * 515. Find Largest Value in Each Tree Row * https://leetcode.com/problems/find-largest-value-in-each-tree-row/description/ * * 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] **/ class TreeNode(var `val`: Int) { var left: TreeNode? = null var right: TreeNode? = null } class Solution { /* * solution:BFS, scan every level and pick the maximum number; * Time complexity:O(n), Space complexity:O(n) * */ fun largestValues(root: TreeNode?): List<Int> { val result= ArrayList<Int>() if (root == null){ return result } val queue = LinkedList<TreeNode>() queue.offer(root) while (queue.isNotEmpty()){ val size = queue.size var max = Int.MIN_VALUE for (i in 0 until size){ val cur= queue.poll() max = Math.max(max,cur.`val`) if (cur.left!=null){ queue.offer(cur.left) } if (cur.right!=null){ queue.offer(cur.right) } } result.add(max) } return result } }