题目:leetcode199. 二叉树的右视图
描述
给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
思路
还是二叉树的层次遍历,只是在遍历的过程中,我们只需要将每一层的最后一个结点的值加入结果集中,但是所有遍历到的节点都要将它的左节点和右节点加入队列。
代码
import java.util.ArrayList;
import java.util.Deque;
import java.util.LinkedList;
import java.util.List;
public class Solution {
public List<Integer> rightSideView(TreeNode root) {
if(root==null)
return new ArrayList<>();
List<Integer> result=new ArrayList<>();
Deque<TreeNode> deque=new LinkedList<>();
deque.offer(root);
int length=0;
while(!deque.isEmpty())
{
length=deque.size();
for (int i = 0; i < length; i++) {
TreeNode node=deque.poll();
if(node.left!=null)
deque.offer(node.left);
if(node.right!=null)
deque.offer(node.right);
if(i==length-1)
result.add(node.val);
}
}
return result;
}
}