Skip to content

Commit 250d1fd

Browse files
committed
refactor(medium): add type tree in 102 problem
1 parent c074b25 commit 250d1fd

File tree

3 files changed

+27
-17
lines changed

3 files changed

+27
-17
lines changed

src/main.rs

+12-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,18 @@
11
mod medium;
22

33
fn main() {
4-
use leetcode::medium::remove_nth_node_from_end_of_list::ListNode;
5-
let head = ListNode::from_vec(vec![1, 2, 3, 4, 5]);
6-
let result = leetcode::medium::remove_nth_node_from_end_of_list::remove_nth_from_end(head, 2);
4+
use leetcode::medium::binary_tree_level_order_traversal::{level_order, TreeNode};
5+
let root = TreeNode::from_vec(vec![
6+
Some(3),
7+
Some(9),
8+
Some(20),
9+
None,
10+
None,
11+
Some(15),
12+
Some(7),
13+
]);
14+
15+
let result = level_order(root);
716
println!("result: {:?}", result);
817
}
918

src/medium/binary_tree_level_order_traversal.rs

+6-4
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22
use std::cell::RefCell;
33
use std::rc::Rc;
44

5+
type Tree = Option<Rc<RefCell<TreeNode>>>;
6+
57
// Definition for a binary tree node.
68
#[derive(Debug, PartialEq, Eq)]
79
pub struct TreeNode {
810
pub val: i32,
9-
pub left: Option<Rc<RefCell<TreeNode>>>,
10-
pub right: Option<Rc<RefCell<TreeNode>>>,
11+
pub left: Tree,
12+
pub right: Tree,
1113
}
1214

1315
impl TreeNode {
@@ -21,7 +23,7 @@ impl TreeNode {
2123
}
2224

2325
#[inline]
24-
pub fn from_vec(vec: Vec<Option<i32>>) -> Option<Rc<RefCell<TreeNode>>> {
26+
pub fn from_vec(vec: Vec<Option<i32>>) -> Tree {
2527
let mut nodes = vec![];
2628

2729
for val in vec {
@@ -50,7 +52,7 @@ impl TreeNode {
5052
}
5153
}
5254

53-
pub fn level_order(root: Option<Rc<RefCell<TreeNode>>>) -> Vec<Vec<i32>> {
55+
pub fn level_order(root: Tree) -> Vec<Vec<i32>> {
5456
let mut result = vec![];
5557
if root.is_none() {
5658
return result;

src/medium/readme.md

+9-10
Original file line numberDiff line numberDiff line change
@@ -333,16 +333,15 @@ Put the code below in main.rs and run `cargo run`
333333

334334
```rust
335335
use leetcode::medium::binary_tree_level_order_traversal::{level_order, TreeNode};
336-
let mut root = TreeNode::new(3);
337-
let mut node9 = TreeNode::new(9);
338-
let mut node20 = TreeNode::new(20);
339-
let mut node15 = TreeNode::new(15);
340-
let mut node7 = TreeNode::new(7);
341-
342-
node20.left = Some(Rc::new(RefCell::new(node15)));
343-
node20.right = Some(Rc::new(RefCell::new(node7)));
344-
root.left = Some(Rc::new(RefCell::new(node9)));
345-
root.right = Some(Rc::new(RefCell::new(node20)));
336+
let root = TreeNode::from_vec(vec![
337+
Some(3),
338+
Some(9),
339+
Some(20),
340+
None,
341+
None,
342+
Some(15),
343+
Some(7),
344+
]);
346345

347346
let result = level_order(root);
348347
println!("result: {:?}", result);

0 commit comments

Comments
 (0)