17个版本 (9个重大变更)
0.10.1 | 2023年10月27日 |
---|---|
0.10.0 | 2023年1月28日 |
0.9.2 | 2023年1月21日 |
#912 in 数据结构
每月25次下载
32KB
875 行
二叉树构建器
该库提供了一个具有build_tree
方法的IteratorEx
trait,该方法适用于实现Node
trait的任何节点迭代器。如果构建成功,则build_tree
函数返回构建的树的根节点;如果提供的迭代器为空,则返回None
。
节点特质
Node
特质表示二叉树中的一个节点。它提供了两个方法来从子节点创建新的父节点
new_parent(self, right: Self) -> Self
:从两个子节点创建一个新的父节点,new_parent_from_one(self) -> Self
:从一个子节点创建一个新的父节点。
这些方法的实现特定于使用的节点类型,应由用户提供。
lib.rs
:
从迭代器构建二叉树。
示例
use bin_tree::{IteratorEx, Node};
#[derive(Clone, Default, PartialEq, Eq, Debug)]
struct NodeStr(String);
impl Node for NodeStr {
fn new_parent(self, right: Self) -> Self {
Self("[".to_owned() + &self.0 + ", " + &right.0 + "]")
}
fn new_parent_from_single(self) -> Self {
self
}
}
let x = (0..10).map(|v| NodeStr(v.to_string())).build_tree();
assert_eq!(x, Some(NodeStr("[[[[0, 1], [2, 3]], [[4, 5], [6, 7]]], [8, 9]]".to_string())));