作者:
yam276 ('_')
2025-06-23 18:10:35872. 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
}
}