1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// use std::cell::RefCell;
// use std::rc::Rc;
// #[derive(Debug, Copy, Clone)]
// enum Color {
// Red,
// Black,
// }
// impl Color {
// fn opposite(self) -> Self {
// match self {
// Self::Red => Self::Black,
// Self::Black => Self::Red,
// }
// }
// }
// #[derive(Debug, Clone)]
// struct Node<T: Ord + PartialEq + Eq + Clone> {
// value: T,
// color: Color,
// left: Option<Rc<RefCell<Node<T>>>>,
// right: Option<Rc<RefCell<Node<T>>>>,
// parent: Option<Rc<RefCell<Node<T>>>>,
// }
// impl<T: Ord + PartialEq + Eq + Clone> Node<T> {
// fn new(value: T) -> Self {
// Self {
// value,
// color: Color::Red,
// left: None,
// right: None,
// parent: None,
// }
// }
// pub fn append(&mut self, node: Rc<RefCell<Node<T>>>) {
// }
// }