leetcode_rust/smallest_string_starting_from_leaf.rs
1#![allow(dead_code)]
2
3// todo
4
5//use std::cell::RefCell;
6//use std::rc::Rc;
7//
8//use crate::binary_tree::TreeNode;
9
10//pub fn smallest_from_leaf(root: Option<Rc<RefCell<TreeNode>>>) -> i32 {
11// let s = preorder_traversal(root);
12// let min_val = s.iter().min_by(|&a, &b| (*a).0.cmp(&(*b).0));
13//
14// (*min_val.unwrap()).1.borrow().val
15//}
16//
17//pub fn preorder_traversal(
18// root: Option<Rc<RefCell<TreeNode>>>,
19//) -> Vec<(i32, Rc<RefCell<TreeNode>>)> {
20// let mut res: Vec<(i32, Rc<RefCell<TreeNode>>)> = vec![];
21// preorder(root, &mut res);
22// res
23//}
24//
25//fn preorder(root: Option<Rc<RefCell<TreeNode>>>, mut res: &mut Vec<(i32, Rc<RefCell<TreeNode>>)>) {
26// match root {
27// None => {}
28// Some(node) => {
29// preorder(node.borrow().left.clone(), &mut res);
30// preorder(node.borrow().right.clone(), &mut res);
31// match (node.borrow().left, node.borrow().right) {
32// (None, None) => {
33// let val = (node.borrow().val, node.clone());
34// res.push(val);
35// }
36//
37// _ => {}
38// }
39// }
40// }
41//}
42//
43//#[cfg(test)]
44//mod tests {
45// use super::*;
46//
47// #[test]
48// fn test1() {
49// let tree = Some(Rc::new(RefCell::new(TreeNode {
50// val: 1,
51// left: None,
52// right: Some(Rc::new(RefCell::new(TreeNode {
53// val: 2,
54// left: Some(Rc::new(RefCell::new(TreeNode {
55// val: 3,
56// left: None,
57// right: None,
58// }))),
59// right: None,
60// }))),
61// })));
62// assert_eq!(smallest_from_leaf(tree), 1);
63// }
64//}