楼主: 
yam276 ('_')   
2025-07-01 16:31:48199. Binary Tree Right Side View
题目:
求一棵树的每一层最右边节点
思路:
这题是 BFS
你会建立一个 queue 储存每一层元素
每次都是一层 之后会把原本的都拿出来取他们的左右子节点
因此每次建完一层之后每次取最后一个东西凑成 Vec 就好了
Code:
use std::collections::VecDeque;
use std::rc::Rc;
use std::cell::RefCell;
impl Solution {
    pub fn right_side_view(root: Option<Rc<RefCell<TreeNode>>>) -> Vec<i32> {
        let mut queue = VecDeque::new();
        let mut result = Vec::new();
        if let Some(node) = root {
            queue.push_back(node);
        }
        while !queue.is_empty() {
            let level_size = queue.len();
            for i in 0..level_size {
                if let Some(node) = queue.pop_front() {
                    let mut n_borrow = node.borrow_mut();
                    if let Some(left) = n_borrow.left.take() {
                        queue.push_back(left);
                    }
                    if let Some(right) = n_borrow.right.take() {
                        queue.push_back(right);
                    }
                    if i == level_size - 1 {
                        result.push(n_borrow.val);
                    }
                }
            }
        }
        result
    }
}