class= " lineNumbers "
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:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
|
class=
поддерево >class " class= " " codeSnippet781788 id= = значения) {, то
если (leftTree! = null) {
leftTree.insertValue (newValue);
} еще {
leftTree = новое поддерево (newValue, это);
}
} еще {
если (rightTree! = null) {
rightTree.insertValue (newValue);
} еще {
rightTree = новое поддерево (newValue, это);
}
}
}
общественный шнур toString () {
Шнур returString = "";
если (leftTree! = null) {
returString = leftTree.toString () + ««;
}
returString = returString + значение;
если (rightTree! = null) {
returString = returString + ««+ rightTree.toString ();
}
showObject ();
возвращенный returString;
}
общественное булевское lookForValue (søkeVerdi int) {
если (значение == søkeVerdi) {, то
возвращенно true;
}
если (значение > søkeVerdi) {, то
если (leftTree! = null) {
возвращенное leftTree.lookForValue (søkeVerdi);
} еще {
возвращенное ложное;
}
} еще {
если (rightTree! = null) {
возвращенное rightTree.lookForValue (søkeVerdi);
} еще {
возвращенное ложное;
}
}
}
общественное булевское deleteValue (значение int) {
если (значение == this.value) {, то
//If мы находили узел с правым значением, мы должны найти если оно имеет любые узлы ребенка
если ((&&, то null == rightTree) (null == leftTree)) {
/** Этот узел не имеет никакого ребенка, его можно соединить с tree.*/
если (<= this.parent.getValue, то значения ()) {//We находится на левой стороне, и мы relink там на родителе
this.parent.relink (0, null);
} еще {//We находится на правильной позиции, и мы relink там на родителе
this.parent.relink (1, null);
}
//At конец мы relink это backreference предметов для того чтобы parent:
this.parent = null;
возвращенно true;
} еще если (, то ((&& null == rightTree) (leftTree! = null)) || ((rightTree! = && null) (null == leftTree))) {
/** Узел имеет только один узел ребенка. Мы соединяем над этим узлом к ребенку *
если (<= this.parent.getValue, то значения ()) {//We находится на левой стороне, и мы соединяем там над этим предметом к этому rightTree предметов
если (, то (rightTree! = && null) (null == leftTree)) this.parent.relink (0, this.rightTree);
если ((&&, то null == rightTree) (leftTree! = null)) this.parent.relink (0, this.leftTree);
this.rightTree = null;
} еще {//Or еще мы находимся на правильной позиции, и мы соединяем там над этим предметом к этому leftTree предметов
если (, то (rightTree! = && null) (null == leftTree)) this.parent.relink (1, this.rightTree);
если ((&&, то null == rightTree) (leftTree! = null)) this.parent.relink (1, this.leftTree);
this.leftTree = null;
}
//At конец мы relink эта справка предметов к родителю:
this.parent = null;
возвращенно true;
} еще {
/** Noden имеет 2 узла ребенка, эти после того как они двинуты правильно и после того как они установлены правильно под узлом родителя *
если (<= this.parent.getValue, то значения ()) {//We находится на левой стороне, мы соединяет правый узел ребенка на левой стороне на родителе
//We после этого спрашивает, что правый узел ребенка находит новый космос для левого childnode
this.parent.relink (0, this.rightTree);
this.rightTree.giveNewPlace (this.leftTree);
this.rightTree = null;
this.leftTree = null;
this.parent = null;
} еще {//Or еще мы находимся на правильной позиции, и мы соединяем правый узел ребенка на правильной позиции на родителе
this.parent.relink (1, this.rightTree);
this.rightTree.giveNewPlace (this.leftTree);
this.rightTree = null;
this.leftTree = null;
this.parent = null;
}
this.parent = null;
возвращенно true;
}
} еще {
//If мы foumd бедного человек узел с правильно значением, мы ищем правильно примечание ребенка и посмотрим там:
если (this.value < значение) {, то
если (rightTree! = null) rightTree.deleteValue (значение);
} еще {
если (leftTree! = null) leftTree.deleteValue (значение);
}
}
возвращенное ложное;
}
общественное getValue int () {
возвращенное this.value;
}
свободное пространство публики relink (int iий, поддерево t) {
если (I > 0) {, то
this.rightTree = t;
} еще {
this.leftTree = t;
}
t.setNewParent (это);
}
общественное getChildNode поддерева (int iий) {
если (I > 0) {, то
возвращенное this.rightTree;
} еще {
возвращенное this.leftTree;
}
}
giveNewPlace публики пустое (поддерево t) {
Поддерево t //Takes и попытки для того чтобы дать ему новое место в вале
//Check если этот узел имеет космос для левого узла, то ребенка, если не:, то
//Check если этот узел имеет космос для правого узла ребенка и приказывает 2 childnodes правильно, то, если не:, то
//Ask следующее левое childNode для того чтобы дать новое место с своим giveNewPlace ().
если (null == this.leftTree) {, то
this.leftTree = t;
t.setNewParent (это);
} еще если (null == this.rightTree) {, то
если (getValue () < t.getValue, то ()) {
this.rightTree = t;
t.setNewParent (это);
} еще {
this.rightTree = this.leftTree;
this.leftTree = t;
t.setNewParent (это);
}
} еще {
this.leftTree.giveNewPlace (t);
}
}
setNewParent публики пустое (поддерево t) {
this.parent = t;
}
showObject публики пустое () {
System.out.println («----------------------------------------");
если (родитель! = null) System.out.println («родитель: » + parent.getValue ());
System.out.println («*Value: » + this.value);
если (rightTree! = null) System.out.println («правый ребенок: » + rightTree.getValue ());
если (leftTree! = null) System.out.println («ый ребенок: » + leftTree.getValue ());
System.out.println («----------------------------------------");
}
}
тип BinarySeekingTree {
приватная ситовина поддерева;
общественный шнур toString () {
если (ситовина! = null) {
возвращенное rot.toString ();
} еще {
возвращенный null;
}
}
insertValue публики пустое (значение int) {
если (ситовина! = null) {
rot.insertValue (значение);
} еще {
ситовина = новое поддерево (значение, null);
}
}
общественное булевское deleteValue (значение int) {
//If там будет никаким корнем в вале, тогда не будет значения, котор нужно уничтожить
если (null == ситовины) {, то
возвращенное ложное;
} еще {
если (rot.deleteValue, то (значение)) {
возвращенно true;
} еще {
возвращенное ложное;
}
}
}
общественное булевское lookForValue (søkeVerdi int) {
если (null == ситовины) {, то
возвращенное ложное;
}
возвращенное rot.lookForValue (søkeVerdi);
}
}
искать типа {
общественное свободное пространство static главным образом (args шнура []) {
Вал BinarySeekingTree = новое BinarySeekingTree ();
tree.insertValue (15);
tree.insertValue (10);
tree.insertValue (28);
tree.insertValue (3);
tree.insertValue (14);
tree.insertValue (20);
tree.insertValue (29);
tree.insertValue (1);
tree.insertValue (4);
tree.insertValue (12);
tree.insertValue (13);
tree.insertValue (16);
tree.insertValue (21);
tree.insertValue (30);
tree.insertValue (39);
System.out.println («вал в сортированной индикации: » + tree.toString ()); //Sorting терпит неудачу после уничтожать предмет
System.out.println («3 в вале: » + tree.lookForValue (3));
System.out.println («4 в вале: » + tree.lookForValue (4));
System.out.println («1 в вале: » + tree.lookForValue (1));
System.out.println («10 в вале: » + tree.lookForValue (10));
System.out.println («12 в вале: » + tree.lookForValue (12));
System.out.println («13 в вале: » + tree.lookForValue (13));
System.out.println («14 в вале: » + tree.lookForValue (14));
System.out.println («16 в вале: » + tree.lookForValue (16));
System.out.println («20 в вале: » + tree.lookForValue (20));
System.out.println («21 в вале: » + tree.lookForValue (21));
System.out.println («28 в вале: » + tree.lookForValue (28));
System.out.println («29 в вале: » + tree.lookForValue (29));
System.out.println («30 в вале: » + tree.lookForValue (30));
System.out.println («39 в вале: » + tree.lookForValue (39));
System.out.println («мы теперь пытаемся уничтожить значение 10 от вала, но не 28.");
tree.deleteValue (10);
//tree.deleteValue (28);
System.out.println ("");
System.out.println («вал в сортированной индикации: » + tree.toString ()); //Sorting терпит неудачу после уничтожать предмет
System.out.println («3 в вале: » + tree.lookForValue (3));
System.out.println («4 в вале: » + tree.lookForValue (4));
System.out.println («1 в вале: » + tree.lookForValue (1));
System.out.println («10 в вале: » + tree.lookForValue (10));
System.out.println («12 в вале: » + tree.lookForValue (12));
System.out.println («13 в вале: » + tree.lookForValue (13));
System.out.println («14 в вале: » + tree.lookForValue (14));
System.out.println («16 в вале: » + tree.lookForValue (16));
System.out.println («20 в вале: » + tree.lookForValue (20));
System.out.println («21 в вале: » + tree.lookForValue (21));
System.out.println («28 в вале: » + tree.lookForValue (28));
System.out.println («29 в вале: » + tree.lookForValue (29));
System.out.println («30 в вале: » + tree.lookForValue (30));
System.out.println («39 в вале: » + tree.lookForValue (39));
}
}
|