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]
给出一棵二叉树,让找出每层的最大值
思路:
按层遍历BFS
需要记住每层有多少个节点,方便记录每层的最大值
同时每层要记录最大值
public List<Integer> largestValues(TreeNode root) {
List<Integer> result = new ArrayList<>();
if(root == null) {
return result;
}
int rowLen = 1;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()) {
int tmpLen = 0;
int localMax = Integer.MIN_VALUE;
for(int i = 0; i < rowLen; i++){
TreeNode tmp = queue.poll();
localMax = Math.max(localMax, tmp.val);
if(tmp.left != null) {
tmpLen ++;
queue.offer(tmp.left);
}
if(tmp.right != null) {
tmpLen ++;
queue.offer(tmp.right);
}
}
rowLen = tmpLen;
result.add(localMax);
}
return result;
}
本文介绍了一种算法,用于解决寻找二叉树每层最大值的问题。通过使用BFS(宽度优先搜索)策略,文章详细解释了如何遍历二叉树的每一层,并记录下每层的最大值。
421

被折叠的 条评论
为什么被折叠?



