199. 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 } } -- ※ 發信站: 批踢踢實業坊(www.ptt.org.tw), 來自: 60.248.143.163 (臺灣) ※ 文章網址: https://www.ptt.org.tw/Marginalman/M.1751358710.A.3C9