题目链接:https://leetcode-cn.com/problems/binary-tree-right-side-view/
思路:层次遍历,找出每层的最右节点, 可以用一个队列来存储每层节点,每次将这层节点弹出完毕,最后节点是最右节点
代码:
public List<Integer> rightSideView(TreeNode root) {
List<Integer> res = new ArrayList<>();
Queue<TreeNode> currentlevelNodes = new LinkedList<>();
if (root != null) {
currentlevelNodes.add(root);
}
while (!currentlevelNodes.isEmpty()) {
int size = currentlevelNodes.size();
TreeNode t = null;
while (size-- > 0) {
t = currentlevelNodes.poll();
if (t.left != null) {
currentlevelNodes.add(t.left);
}
if (t.right != null) {
currentlevelNodes.add(t.right);
}
}
if (t != null)
res.add(t.val);
}
return res;
}