Skip to content

Commit e1e80df

Browse files
authored
translate to English
1 parent 8f96b90 commit e1e80df

File tree

1 file changed

+27
-27
lines changed

1 file changed

+27
-27
lines changed

src/Tree23.java

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,57 @@
1+
12
/**
2-
* Класс реализует структуру данных "2-3-дерево".
3-
* Такая структура хранит элементы в виде древовидной структуры, но сбалансированные.
3+
* Implements the "2-3-tree" data structure.
4+
* The structure stores elements in the form of a tree, but balanced.
45
*/
5-
class Tree23<T extends Comparable<T>> {
6+
class Tree23<T extends Comparable<T>> {
67

78
private static final int ROOT_IS_BIGGER = 1;
89
private static final int ROOT_IS_SMALLER = -1;
910

10-
private Node root; // Корень дерева
11-
private int size; // Количество элементов дерева
12-
private boolean addition; // Флаг, чтобы знать, был ли последний элемент добавлен правильно или нет
11+
private Node root; // Tree root
12+
private int size; // The number of tree elements
13+
private boolean addition; // Tracks if the last item was added correctly or not.
1314

1415
Tree23() {
1516
this.root = new Node();
1617
this.size = 0;
1718
}
1819

1920
/**
20-
* @return true, если дерево пусто, иначе false
21+
* @return true, the tree is empty, otherwise false
2122
*/
2223
public boolean isEmpty() {
2324
if (root == null) return true;
2425
return root.getLeftElement() == null;
2526
}
2627

2728
/**
28-
* Метод, для проверки, содержится ли данный узел в дереве
29+
* Check if the given element is in the tree
2930
*
30-
* @param element элемент для поиска
31-
* @return true, если это дерево содержит указанный элемент, иначе false
31+
* @param element the element to check
32+
* @return true, if the element is found, otherwise false
3233
*/
3334
public boolean contains(T element) {
3435
return search(element);
3536
}
3637

3738
/**
38-
* @return кол-во элементов дерева
39-
*/
39+
* @return number of elements in the tree */
4040
public int size() {
4141
return size;
4242
}
4343

4444
/**
45-
* Метод, для добавления нового элемента в дерево, сохраняя его сбалансированным
45+
* Adds a new element to the tree, keeping it balanced
4646
*
47-
* @param element элемент для добавления
47+
* @param element item to add
4848
*/
4949
public void add(T element) {
5050

5151
size++;
5252
addition = false;
5353

54-
if (root == null || root.getLeftElement() == null) { // первый случай
54+
if (root == null || root.getLeftElement() == null) { // first case
5555
if (root == null) {
5656
root = new Node();
5757
}
@@ -69,30 +69,30 @@ public void add(T element) {
6969
}
7070

7171
/**
72-
* @param current узел, в который нужно добавить
73-
* @param element элемент для вставки
72+
* @param current node to add to
73+
* @param element item to add
7474
*/
7575
private Node add(Node current, T element) {
7676

7777
Node newParent = null; // узел, который будет добавлен
7878

79-
/* мы еще не на самом глубоком уровне */
79+
/* we are not yet at the deepest level */
8080
if (!current.isLeaf()) {
8181

8282
Node newNode;
8383

84-
/* такой элемент уже существует */
84+
/* element already exists */
8585
if (current.leftElement.compareTo(element) == 0 || (current.is3Node() && current.rightElement.compareTo(element) == 0)) {
8686
}
8787

88-
// newNode меньше левого элемента
88+
// newNode < left element
8989
else if (current.leftElement.compareTo(element) == ROOT_IS_BIGGER) {
9090
newNode = add(current.left, element);
9191

92-
// newNode приходит из левой ветви
92+
// newNode comes from the left branch
9393
if (newNode != null) {
9494

95-
// newNode, в этом случае, всегда меньше, чем current.left
95+
// newNode < than current.left
9696
if (current.is2Node()) {
9797
current.rightElement = current.leftElement; // сдвинуть текущий левый элемент вправо
9898
current.leftElement = newNode.leftElement;
@@ -101,19 +101,19 @@ else if (current.leftElement.compareTo(element) == ROOT_IS_BIGGER) {
101101
current.left = newNode.left;
102102
}
103103

104-
// В этом случае у нас новое разделение, поэтому текущий элемент слева будет подниматься
104+
// we have a new division, so the current element on the left will rise
105105
else {
106106

107-
// копируем правую часть поддерева
107+
// copy the right side of the subtree
108108
Node rightCopy = new Node(current.rightElement, null, current.mid, current.right);
109109

110-
// создаем новую «структуру», вставляя правую часть
110+
// create a new “structure” by inserting the right side
111111
newParent = new Node(current.leftElement, null, newNode, rightCopy);
112112
}
113113
}
114114
}
115115

116-
// newNode больше левого и меньше правого
116+
// newNode is > left and < right
117117
else if (current.is2Node() || (current.is3Node() && current.rightElement.compareTo(element) == ROOT_IS_BIGGER)) {
118118

119119
newNode = add(current.mid, element);
@@ -589,4 +589,4 @@ private void postOrder(Node current) {
589589
}
590590
}
591591

592-
}
592+
}

0 commit comments

Comments
 (0)