872. Leaf-Similar Trees
題目:
兩棵樹的葉子是否相等
思路:
葉子 = 樹的最下面沒後續的節點
所以用 dfs 找沒有左右子節點的蒐集起來比較就好
Code:
use std::cell::RefCell;
use std::rc::Rc;
impl Solution {
pub fn leaf_similar(
root1: Option<Rc<RefCell<TreeNode>>>,
root2: Option<Rc<RefCell<TreeNode>>>,
) -> bool {
fn get_leaf_vec(node: Option<Rc<RefCell<TreeNode>>>,
leaves: &mut Vec<i32>) {
if let Some(n) = node {
let n = n.borrow();
if n.left == None && n.right == None {
leaves.push(n.val);
} else {
get_leaf_vec(n.left.clone(), leaves);
get_leaf_vec(n.right.clone(), leaves);
}
}
}
let mut l1 = Vec::new();
get_leaf_vec(root1, &mut l1);
let mut l2 = Vec::new();
get_leaf_vec(root2, &mut l2);
l1 == l2
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.143.163 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1750673437.A.C6E.html