但凡说道每层 讨论树的层级问题
就要想到树的层序遍历!
相关问题有很多:
**每层的最大值
右侧视图
最左侧最底部的节点的值
**
。。。
用到的方法无外乎两个队列
一个队列储存当前层的节点
一个队列储存下一层的节点
package 剑指offer.树;
import java.util.ArrayList;
import java.util.Deque;
import java.util.LinkedList;
import java.util.List;
public class 二叉树的每层最大值 {
public List<Integer> largestValues(TreeNode root){
List<Integer> result = new ArrayList<>();
Deque<TreeNode> queue1 =new LinkedList<>();
Deque<TreeNode> queue2 =new LinkedList<>();
if(root!=null){
queue1.offer(root);
}
int max = Integer.MIN_VALUE;
while (!queue1.isEmpty()){
TreeNode node=queue1.poll();
max=Math.max(node.val,max);
if(node.left!=null){
queue2.offer(node.left);
}
if(node.right!=null){
queue2.offer(node.right);
}
if(queue1.isEmpty()){
result.add(max);
max=Integer.MIN_VALUE;
queue1=queue2;
queue2=new LinkedList<>();
}
}
return result;
}
}