package 剑指offer.树;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
/**
* 其实就是找二叉树的每层的右侧的节点
* quene1是存放当前层的节点
* queue2存放下一层的节点
* 由于是从左到右进行遍历,因此最后那个node就是最右侧的节点
*
*/
public class 二叉树的右侧视图 {
public List<Integer> rightSideView(TreeNode root) {
List<Integer> view = new ArrayList<>();
Queue<TreeNode> queue1 =new LinkedList<>();
Queue<TreeNode> queue2 =new LinkedList<>();
if(root!=null){
queue1.offer(root);
}
while (!queue1.isEmpty()){
TreeNode node = queue1.poll();
if (node.left!=null){
queue2.offer(node.left);
}
if(node.right!=null){
queue2.offer(node.right);
}
if (queue1.isEmpty()){
view.add(node.val);
queue1=queue2;
queue2=new LinkedList<>();
}
}
return view;
}
}
还是那个套路