这个专栏 我将分享每日做的算法题的解题思路 秋招加油!
这是第十五天 !!
044 二叉树每层的最大值
题目
AC代码
class Solution {
public List<Integer> largestValues(TreeNode root) {
if(root == null){
return new ArrayList<>();
}
List<Integer> res = new ArrayList<>();
Queue<TreeNode> queue = new ArrayDeque<>();
queue.offer(root);
while(!queue.isEmpty()){
int len = queue.size();
int value = Integer.MIN_VALUE;
while(len>0){
len--;
TreeNode node = queue.poll();
if(node.left!=null){
queue.offer(node.left);
}
if(node.right != null){
queue.offer(node.right);
}
value = Math.max(node.val,value);
}
res.add(value);
}
return res;
}
}
用队列存储每一层的值,并找到每层的最大值,用列表存储。
045 二叉树最底层最左边的值
题目
AC代码
class Solution {
public int findBottomLeftValue(TreeNode root) {
Queue<TreeNode> queue = new ArrayDeque<>();
queue.offer(root);
int res = 0;
while(!queue.isEmpty()){
int len = queue.size();
res = queue.peek().val;
while(len>0){
len--;
TreeNode node = queue.poll();
if(node.left!=null){
queue.offer(node.left);
}
if(node.right != null){
queue.offer(node.right);
}
}
}
return res;
}
}
用队列存储每层的值,并找到最后一层的第一个值,返回即可。
046 二叉树的右侧视图
题目
AC代码
class Solution {
public List<Integer> rightSideView(TreeNode root) {
if(root == null){
return new ArrayList<>();
}
List<Integer> res = new ArrayList<>();
Queue<TreeNode> queue = new ArrayDeque<>();
queue.offer(root);
while(!queue.isEmpty()){
int len = queue.size();
while(len>0){
len--;
TreeNode node = queue.poll();
if(node.left!=null){
queue.offer(node.left);
}
if(node.right != null){
queue.offer(node.right);
}
if(len == 0 ) res.add(node.val);
}
}
return res;
}
}
用队列存储每一层的值,并找到每一层的最后一个值,用列表存储。
书山有路
坚守坚强坚持不懈就是捷径
学海无涯
每次每天每个阶段都有进步就是收获