codeTop100题(37)199. 二叉树的右视图

68 阅读1分钟

1. 题目

199. 二叉树的右视图

2. 分析

本题找到方法后其实很简单,首先我们根据给出的图:

image.png

可以得到一个结论,本题其实就是要找每一行最右边的节点,我们之前写过一个题目,二叉树的层序遍历,只需要对层序遍历做一个改造,每次都取最后一个就行了。

3. 代码

public List<Integer> rightSideView(TreeNode root) {
    List<Integer> list = new ArrayList<>();
    if (root == null) {
        return list;
    }
    //其实是找每一行的最后一个节点
    Queue<TreeNode> queue = new ArrayDeque<>();
    queue.offer(root);
    while (!queue.isEmpty()) {
        int size = queue.size();
        for (int i = 0; i < size; i++) {
            root = queue.poll();
            if (null != root.left) {
                queue.add(root.left);
            }
            if (null != root.right) {
                queue.add(root.right);
            }
        }
        list.add(root.val);

    }
    return list;
}