帮我写一段红黑树结构代码,用java写
时间: 2023-03-29 14:00:26 浏览: 71
以下是红黑树结构的 Java 代码:
```
class Node {
int data;
Node left, right;
boolean isRed;
public Node(int data) {
this.data = data;
this.isRed = true;
}
}
class RedBlackTree {
Node root;
public void insert(int data) {
Node node = new Node(data);
root = insert(root, node);
root.isRed = false;
}
private Node insert(Node root, Node node) {
if (root == null) {
return node;
}
if (node.data < root.data) {
root.left = insert(root.left, node);
} else if (node.data > root.data) {
root.right = insert(root.right, node);
} else {
return root;
}
if (isRed(root.right) && !isRed(root.left)) {
root = rotateLeft(root);
}
if (isRed(root.left) && isRed(root.left.left)) {
root = rotateRight(root);
}
if (isRed(root.left) && isRed(root.right)) {
flipColors(root);
}
return root;
}
private boolean isRed(Node node) {
if (node == null) {
return false;
}
return node.isRed;
}
private Node rotateLeft(Node node) {
Node temp = node.right;
node.right = temp.left;
temp.left = node;
temp.isRed = node.isRed;
node.isRed = true;
return temp;
}
private Node rotateRight(Node node) {
Node temp = node.left;
node.left = temp.right;
temp.right = node;
temp.isRed = node.isRed;
node.isRed = true;
return temp;
}
private void flipColors(Node node) {
node.isRed = true;
node.left.isRed = false;
node.right.isRed = false;
}
}
```
希望这段代码能够帮到你!