请用rust 写一个红黑树例子
时间: 2023-02-27 11:47:05 浏览: 153
好的,以下是一个用 Rust 语言实现的红黑树的例子:
```
enum Color {
Red,
Black,
}
struct Node<T> {
value: T,
color: Color,
left: Option<Box<Node<T>>>,
right: Option<Box<Node<T>>>,
}
impl<T: Ord> Node<T> {
fn new(value: T) -> Self {
Node {
value,
color: Color::Red,
left: None,
right: None,
}
}
fn insert(&mut self, value: T) {
if value < self.value {
if let Some(ref mut left) = self.left {
left.insert(value);
} else {
self.left = Some(Box::new(Node::new(value)));
}
} else {
if let Some(ref mut right) = self.right {
right.insert(value);
} else {
self.right = Some(Box::new(Node::new(value)));
}
}
}
}
struct RedBlackTree<T> {
root: Option<Box<Node<T>>>,
}
impl<T: Ord> RedBlackTree<T> {
fn new() -> Self {
RedBlackTree { root: None }
}
fn insert(&mut self, value: T) {
if let Some(ref mut root) = self.root {
root.insert(value);
} else {
self.root = Some(Box::new(Node::new(value)));
}
}
}
```
这个示例实现了一个简单的红黑树,只有插入操作。如果你需要其他操作,可以继续添加代码。
阅读全文