也是一个层序遍历的题目,然后我为了快一点,,没有采用对树二次遍历(第一次把树全部取出,第二次遍历集合)而是在递归过程中完成
代码如下
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public static List<Integer> largestValues(TreeNode root) {
List<Integer> result = new ArrayList<>();
if (root == null) {
return result;
}
selfTree(root, 0, result);
return result;
}
private static void selfTree(TreeNode node, int depth, List<Integer> result) {
if (node == null) {
return;
}
if (depth == result.size()) {
result.add(node.val); // 初始化当前深度的最大值
} else {
result.set(depth, Math.max(result.get(depth), node.val)); // 更新当前深度的最大值
}
selfTree(node.left, depth + 1, result);
selfTree(node.right, depth + 1, result);
}
}