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]
基础中的基础,树的层次遍历/广度优先搜索。在搜索中存储每一行的最大值只不过是多加了两行代码。不应该是中等难度的题。
Java
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public List<Integer> largestValues(TreeNode root) { if (root == null) return new ArrayList<Integer>(); List<Integer> res = new ArrayList<Integer>(); Queue<TreeNode> q = new LinkedList<>(); q.add(root); while (!q.isEmpty()) { int size = q.size(); int max = Integer.MIN_VALUE; for (int i = 0; i < size; i++) { TreeNode node = q.poll(); max = Math.max(node.val, max); if (node.left != null) q.add(node.left); if (node.right != null) q.add(node.right); } res.add(max); } return res; } }