作者yam276 (史萊哲林的優等生)
看板Marginalman
標題[閒聊] 每日leetcode 75 - Day23
時間Thu Jul 3 23:30:46 2025
700. Search in a Binary Search Tree
題目:
從一棵二元樹找一個數
思路:
二元樹的第一個題目
基本上只要知道二元樹的特性
也就是對於目前的 node.val
left.val < node.val
right.val > node.val
就知道怎麼做了
每次比較目標 val
node.val 比 val 大 就往 left 走
val 比 node.val 大 就往 right走
Code:
use std::rc::Rc;
use std::cell::RefCell;
impl Solution {
pub fn search_bst(root: Option<Rc<RefCell<TreeNode>>>, val: i32)
-> Option<Rc<RefCell<TreeNode>>> {
match root{
None=> None,
Some(n) => {
let node = n.borrow();
if node.val == val {
Some(n.clone())
}else if val < node.val{
Self::search_bst(node.left.clone(), val)
}else{
Self::search_bst(node.right.clone(), val)
}
}
}
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.249.242 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1751556648.A.B39.html