Skip to content

Commit 13c8bd2

Browse files
committed
feat: resolved
1 parent b0ab76b commit 13c8bd2

File tree

2 files changed

+48
-3
lines changed

2 files changed

+48
-3
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
pub fn level_order(root: Vec<Option<i32>>) -> Vec<Vec<i32>> {
2+
let mut res = vec![];
3+
let mut current_level_cache = vec![];
4+
let mut previous_level_node_count = 1;
5+
let mut current_level_none_count = 0;
6+
for n in root {
7+
match n {
8+
Some(v) => {
9+
current_level_cache.push(v);
10+
continue;
11+
}
12+
None => {
13+
current_level_none_count += 1;
14+
if current_level_none_count < previous_level_node_count {
15+
continue;
16+
}
17+
// the end of current level
18+
res.push(current_level_cache.clone());
19+
previous_level_node_count = current_level_cache.len();
20+
current_level_cache = vec![];
21+
current_level_none_count = 0;
22+
}
23+
}
24+
}
25+
res.push(current_level_cache);
26+
return res;
27+
}
28+
29+
#[cfg(test)]
30+
mod tests {
31+
use super::*;
32+
33+
#[test]
34+
fn test_example1() {
35+
let root = vec![
36+
Some(1),
37+
None,
38+
Some(3),
39+
Some(2),
40+
Some(4),
41+
None,
42+
Some(5),
43+
Some(6),
44+
];
45+
let expected = vec![vec![1], vec![3, 2, 4], vec![5, 6]];
46+
assert_eq!(level_order(root), expected);
47+
}
48+
}

n_ary_tree_level_order_traversal/src/main.rs

Lines changed: 0 additions & 3 deletions
This file was deleted.

0 commit comments

Comments
 (0)