17个版本 (9个重大变更)

0.10.1 2023年10月27日
0.10.0 2023年1月28日
0.9.2 2023年1月21日

#912 in 数据结构

每月25次下载

Apache-2.0

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())));

依赖项