19 个版本
0.1.149 | 2024 年 5 月 15 日 |
---|---|
0.1.147 | 2024 年 5 月 14 日 |
0.1.132 | 2024 年 3 月 21 日 |
#460 in 数据结构
41KB
339 行
LeetCode Trees in Rust
描述
此库旨在使任何使用 Rust 的 LeetCoders 在解决 LeetCode (LC) 问题时有更好的体验。它使用 cargo make
以具有可重复的子模块(检查 leetcode-trees-rs/solutions/README.md
),以及实现 LC 上的二叉树定义。
使用库的快速入门
对于 TreeNode
值(二叉树)
use leetcode_trees_rs::{
prelude::*,
utils::{symmetric_tree, tree, TreeNode},
};
struct Solution {} // Assigning an empty struct to make a solution impl block.
use std::{cell::RefCell, rc::Rc};
impl Solution {
pub fn your_leetcode_fn() {}
}
#[cfg(test)]
mod tests {
#[test]
fn tests() {
// . . .
}
}
fn main() -> Result<()> {
// Equivalent of:
// 1
// 2 2
// 3 3 3 3
let symmetric_tree_node = symmetric_tree!(1, 2, 3);
// Equivalent of:
// 1
// 2 #
// 3 3 # #
// 4 # # # # # # #
let custom_tree = tree!(&[
vec![Some(1)],
vec![Some(2), None],
vec![Some(3), Some(3)],
vec![Some(4)],
]);
// If you want trees that only branch to the left or to the right then
// there're also the `left_tree!()` and `right_tree!()` macros!
// Those macros can help you write your test runs easier.
Ok(())
}
对于 ListNode
值(单链表)
use leetcode_trees_rs::{list_node, prelude::*, utils::ListNode};
struct Solution {} // Assigning an empty struct to make a solution impl block.
use std::{cell::RefCell, rc::Rc};
impl Solution {
pub fn your_leetcode_fn() {}
}
#[cfg(test)]
mod tests {
#[test]
fn tests() {
// . . .
}
}
fn main() -> Result<()> {
// This is the very cumbersome manual way of writing your ListNode structs.
let some_list = ListNode {
val: 1,
next: Some(Box::new(ListNode {
val: 2,
next: Some(Box::new(ListNode::new(3))),
})),
};
// And this is the easier way:
let another_list = list_node!(1, 2, 3);
assert_eq!(some_list, another_list);
Ok(())
}
许可证
本项目采用 MIT 许可证。
额外说明
更多代码模板可以在 此模板文件 中找到。
它位于: solutions/lc0_general_nodes_template/src/main.rs
更多文档可以在 docs.rs 中找到。
依赖项
33–47MB ~
~682K SLoC