Skip to content
This repository was archived by the owner on Dec 28, 2024. It is now read-only.

Commit 6c22700

Browse files
committed
Практики 31-32
1 parent 9f441c1 commit 6c22700

File tree

11 files changed

+707
-0
lines changed

11 files changed

+707
-0
lines changed

students/23K0155/23K0155-p31/pom.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
5+
<parent>
6+
<artifactId>23K0155</artifactId>
7+
<groupId>ru.mirea.practice</groupId>
8+
<version>2024.1</version>
9+
<relativePath>../pom.xml</relativePath>
10+
</parent>
11+
<artifactId>23K0155-p31</artifactId>
12+
<description>Трицать первое задание</description>
13+
</project>
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
package ru.mirea.practice.s23k0155;
2+
3+
public class Node {
4+
int numberOfKeys; // количество занятых ключей
5+
int[] key = new int[3];
6+
Node first;
7+
Node second;
8+
Node third;
9+
Node fourth;
10+
Node parents; // указатель на родителей
11+
12+
boolean find(int k) { // ключ находится в вершине или нет
13+
for (int i = 0; i < numberOfKeys; i++) {
14+
if (key[i] == k) {
15+
return true;
16+
}
17+
}
18+
return false;
19+
}
20+
21+
void swap(int x, int y) {
22+
int tempInt = x;
23+
x = y;
24+
y = tempInt;
25+
}
26+
27+
void sort2(int x, int y) {
28+
if (x > y) {
29+
swap(x, y);
30+
}
31+
}
32+
33+
void sort3(int x, int y, int z) {
34+
if (x > y) {
35+
swap(x, y);
36+
}
37+
38+
if (x > z) {
39+
swap(x, y);
40+
}
41+
42+
if (y > z) {
43+
swap(y, z);
44+
}
45+
}
46+
47+
void sort() {
48+
if (numberOfKeys == 2) {
49+
sort2(key[0], key[1]);
50+
} else if (numberOfKeys == 3) {
51+
sort3(key[0], key[1], key[2]);
52+
}
53+
}
54+
55+
void addKeyInNode(int k) {
56+
key[numberOfKeys] = k;
57+
numberOfKeys++;
58+
sort();
59+
}
60+
61+
void deleteKeyFromNode(int k) {
62+
if (numberOfKeys >= 1 && key[0] == k) {
63+
key[0] = key[1];
64+
key[1] = key[2];
65+
numberOfKeys--;
66+
} else if (numberOfKeys == 2 && key[1] == k) {
67+
key[1] = key[2];
68+
numberOfKeys--;
69+
}
70+
}
71+
72+
void becomeNode2(int k, Node first, Node second) {
73+
key[0] = k;
74+
this.first = first;
75+
this.second = second;
76+
this.third = null;
77+
this.fourth = null;
78+
this.parents = null;
79+
numberOfKeys = 1;
80+
}
81+
82+
boolean isLeaf() {
83+
return first == null && second == null && third == null;
84+
}
85+
86+
public Node(int key) {
87+
numberOfKeys = 1;
88+
this.key[0] = key;
89+
first = null;
90+
second = null;
91+
third = null;
92+
fourth = null;
93+
parents = null;
94+
}
95+
96+
public Node(int key, Node first, Node second, Node third, Node fourth, Node parents) {
97+
numberOfKeys = 1;
98+
this.key[0] = key;
99+
this.first = first;
100+
this.second = second;
101+
this.third = third;
102+
this.fourth = fourth;
103+
this.parents = parents;
104+
}
105+
106+
@Override
107+
public String toString() {
108+
StringBuilder sb = new StringBuilder();
109+
sb.append("[");
110+
for (int i = 0; i < numberOfKeys; i++) {
111+
sb.append(key[i]);
112+
if (i < numberOfKeys - 1) {
113+
sb.append(", ");
114+
}
115+
}
116+
sb.append("]");
117+
return sb.toString();
118+
}
119+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package ru.mirea.practice.s23k0155;
2+
3+
public abstract class Test {
4+
public static void main(String[] args) {
5+
6+
TwoThreeTree tree = new TwoThreeTree();
7+
tree.root = tree.insert(tree.root, 50);
8+
tree.root = tree.insert(tree.root, 30);
9+
tree.root = tree.insert(tree.root, 70);
10+
tree.root = tree.insert(tree.root, 20);
11+
tree.root = tree.insert(tree.root, 40);
12+
tree.printTree();
13+
14+
}
15+
}
16+

0 commit comments

Comments
 (0)