#199.Binary Tree Right Side View [LeetCode Grind 75 in Java]

[Problem Link] https://leetcode.com/problems/binary-tree-right-side-view/

class Solution {
    public List<Integer> rightSideView(TreeNode root) {

        ArrayList<Integer> ans = new ArrayList<>();
        if(root == null) return ans;

        Queue<TreeNode> q = new LinkedList<>();
        q.add(root);
        ans.add(root.val);
        boolean f = false;


        while(!q.isEmpty()){
            int sz = q.size();
            f = false;

            while(sz -- > 0){
                TreeNode cn = q.poll();
                if(cn.right != null){
                    q.add(cn.right);
                    if(!f){
                        ans.add(cn.right.val);
                        f = true;
                    } 
                }

                if(cn.left != null){
                    q.add(cn.left);
                    if(!f){
                        ans.add(cn.left.val);
                        f = true;
                    }
                }
            }
        }

        return ans;        
    }
}