class SubTree {
intymny SubTree rightTree = null;
intymny SubTree leftTree = null;
intymny SubTree rodzic = null;
intymny int wartość = (0);
jawny SubTree (int wartość) {
this.value = wartość;
}
jawny SubTree (int wartość, SubTree rodzic) {
this.value = wartość;
this.parent = rodzic;
}
jawny kawitacyjny insertValue (int newValue) {
jeżeli (wartość >= newValue) {
jeżeli (leftTree! = null) {
leftTree.insertValue (newValue);
} inny {
leftTree = nowy SubTree (newValue, to);
}
} inny {
jeżeli (rightTree! = null) {
rightTree.insertValue (newValue);
} inny {
rightTree = nowy SubTree (newValue, to);
}
}
}
społeczeństwo Sznurek toString () {
Smyczkowy returString = "";
jeżeli (leftTree! = null) {
returString = leftTree.toString () + "";
}
returString = returString + wartość;
jeżeli (rightTree! = null) {
returString = returString + ""+ rightTree.toString ();
}
showObject ();
powrotny returString;
}
jawny jawny lookForValue (int søkeVerdi) {
jeżeli (søkeVerdi == wartość) {
powrót prawdziwy;
}
jeżeli (wartość > søkeVerdi) {
jeżeli (leftTree! = null) {
powrotny leftTree.lookForValue (søkeVerdi);
} inny {
powrotny fałszywy;
}
} inny {
jeżeli (rightTree! = null) {
powrotny rightTree.lookForValue (søkeVerdi);
} inny {
powrotny fałszywy;
}
}
}
jawny jawny deleteValue (int wartość) {
jeżeli (this.value == wartość) {
//If my znajdować guzek z prawy wartość, my musieć jeżeli ono mieć jakaś dziecko guzek
jeżeli ((rightTree == null) && (leftTree == null)) {
/** Ten guzek mieć żadny dziecko, ono móc łączyć z the tree.*/
jeżeli (wartość <= this.parent.getValue ()) {//We być na lewa strona, i my relink tam przy the rodzic
this.parent.relink ((0), null);
} inny {//We być na the prawa strona, i my relink tam przy the rodzic
this.parent.relink ((1), null);
}
//At the końcówka my relink ten przedmiot backreference rodzic:
this.parent = null;
powrót prawdziwy;
} inny jeżeli (((rightTree == null) && (leftTree! = null)) || ((rightTree! = null) && (leftTree == null))) {
/** The guzek mieć tylko jeden dziecko guzek. My łączyć nad ten guzek the dziecko *
jeżeli (wartość <= this.parent.getValue ()) {//We być na lewa strona, i my łączyć tam nad ten przedmiot ten przedmiot rightTree
jeżeli ((rightTree! = null) && (leftTree == null)) this.parent.relink ((0), this.rightTree);
jeżeli ((rightTree == null) && (leftTree! = null)) this.parent.relink ((0), this.leftTree);
this.rightTree = null;
} inny {//Or inny my być na the prawa strona, i my łączyć tam nad ten przedmiot ten przedmiot leftTree
jeżeli ((rightTree! = null) && (leftTree == null)) this.parent.relink ((1), this.rightTree);
jeżeli ((rightTree == null) && (leftTree! = null)) this.parent.relink ((1), this.leftTree);
this.leftTree = null;
}
//At the końcówka my relink relink protestować odniesienie the rodzic:
this.parent = null;
powrót prawdziwy;
} inny {
/** The noden mieć dwa dziecko guzek, dwa musieć prawidłowo i prawidłowo pod the mateczny guzek *
jeżeli (wartość <= this.parent.getValue ()) {//We być na the lewa strona, my łączyć prawy dziecko guzek na lewa strona przy the rodzic
//We wtedy pytać the prawy dziecko guzek nowy przestrzeń dla the lewy childnode
this.parent.relink ((0), this.rightTree);
this.rightTree.giveNewPlace (this.leftTree);
this.rightTree = null;
this.leftTree = null;
this.parent = null;
} inny {//Or inny my być na the prawa strona, i my łączyć prawy dziecko guzek na the prawa strona przy the rodzic
this.parent.relink ((1), this.rightTree);
this.rightTree.giveNewPlace (this.leftTree);
this.rightTree = null;
this.leftTree = null;
this.parent = null;
}
this.parent = null;
powrót prawdziwy;
}
} inny {
//If my biedak foumd the guzek z the poprawny wartość, my szukać the poprawny dziecko notatka i patrzeć tam:
jeżeli (this.value < wartość) {
jeżeli (rightTree! = null) rightTree.deleteValue (wartość);
} inny {
jeżeli (leftTree! = null) leftTree.deleteValue (wartość);
}
}
powrotny fałszywy;
}
jawny int getValue () {
powrotny this.value;
}
jawny pustka relink (int i, SubTree t) {
jeżeli (i > (0)) {
this.rightTree = t;
} inny {
this.leftTree = t;
}
t.setNewParent (to);
}
jawny SubTree getChildNode (int i) {
jeżeli (i > (0)) {
powrotny this.rightTree;
} inny {
powrotny this.leftTree;
}
}
jawny kawitacyjny giveNewPlace (SubTree t) {
//Takes SubTree t i próba ono nowy miejsce w the drzewo
//Check jeżeli ten guzek mieć przestrzeń dla lewy dziecko guzek, jeśli nie:
//Check jeżeli ten guzek mieć przestrzeń dla prawy dziecko guzek i rozkazywać the dwa childnodes poprawny, jeśli nie:
//Ask the następny lewy childNode nowy miejsce z swój giveNewPlace ().
jeżeli (this.leftTree == null) {
this.leftTree = t;
t.setNewParent (to);
} inny jeżeli (this.rightTree == null) {
jeżeli (getValue () < t.getValue ()) {
this.rightTree = t;
t.setNewParent (to);
} inny {
this.rightTree = this.leftTree;
this.leftTree = t;
t.setNewParent (to);
}
} inny {
this.leftTree.giveNewPlace (t);
}
}
jawny kawitacyjny setNewParent (SubTree t) {
this.parent = t;
}
jawny kawitacyjny showObject () {
System.out.println ("----------------------------------------");
jeżeli (rodzic! = null) System.out.println ("Rodzic: " + parent.getValue ());
System.out.println ("*Value: " + this.value);
jeżeli (rightTree! = null) System.out.println ("Prawy dziecko: " + rightTree.getValue ());
jeżeli (leftTree! = null) System.out.println ("Opuszczać dziecko: " + leftTree.getValue ());
System.out.println ("----------------------------------------");
}
}
klasowy BinarySeekingTree {
intymny SubTree spróchniałość;
społeczeństwo Sznurek toString () {
jeżeli (spróchniałość! = null) {
powrotny rot.toString ();
} inny {
powrotny null;
}
}
jawny kawitacyjny insertValue (int wartość) {
jeżeli (spróchniałość! = null) {
rot.insertValue (wartość);
} inny {
spróchniałość = nowy SubTree (wartość, null);
}
}
jawny jawny deleteValue (int wartość) {
//If tam być żadny korzeń w the drzewo, then tam być żadny wartość
jeżeli (gnilny == null) {
powrotny fałszywy;
} inny {
jeżeli (rot.deleteValue (wartość)) {
powrót prawdziwy;
} inny {
powrotny fałszywy;
}
}
}
jawny jawny lookForValue (int søkeVerdi) {
jeżeli (gnilny == null) {
powrotny fałszywy;
}
powrotny rot.lookForValue (søkeVerdi);
}
}
klasowy Aport {
jawny statyczny kawitacyjny główny (Sznurek [] args) {
BinarySeekingTree drzewo = nowy 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 ("The drzewo w ułożony pokaz: " + tree.toString ()); //Sorting nie udać się po przedmiot
System.out.println ("Być 3 w the drzewo: " + tree.lookForValue (3));
System.out.println ("Być 4 w the drzewo: " + tree.lookForValue (4));
System.out.println ("Być (1) w the drzewo: " + tree.lookForValue (1));
System.out.println ("Być 10 w the drzewo: " + tree.lookForValue (10));
System.out.println ("Być 12 w the drzewo: " + tree.lookForValue (12));
System.out.println ("Być 13 w the drzewo: " + tree.lookForValue (13));
System.out.println ("Być 14 w the drzewo: " + tree.lookForValue (14));
System.out.println ("Być 16 w the drzewo: " + tree.lookForValue (16));
System.out.println ("Być 20 w the drzewo: " + tree.lookForValue (20));
System.out.println ("Być 21 w the drzewo: " + tree.lookForValue (21));
System.out.println ("Być 28 w the drzewo: " + tree.lookForValue (28));
System.out.println ("Być 29 w the drzewo: " + tree.lookForValue (29));
System.out.println ("Być 30 w the drzewo: " + tree.lookForValue (30));
System.out.println ("Być 39 w the drzewo: " + tree.lookForValue (39));
System.out.println ("My teraz próbować the wartość 10 od the drzewo, ale nie 28.");
tree.deleteValue (10);
//tree.deleteValue (28);
System.out.println ("");
System.out.println ("The drzewo w ułożony pokaz: " + tree.toString ()); //Sorting nie udać się po przedmiot
System.out.println ("Być 3 w the drzewo: " + tree.lookForValue (3));
System.out.println ("Być 4 w the drzewo: " + tree.lookForValue (4));
System.out.println ("Być (1) w the drzewo: " + tree.lookForValue (1));
System.out.println ("Być 10 w the drzewo: " + tree.lookForValue (10));
System.out.println ("Być 12 w the drzewo: " + tree.lookForValue (12));
System.out.println ("Być 13 w the drzewo: " + tree.lookForValue (13));
System.out.println ("Być 14 w the drzewo: " + tree.lookForValue (14));
System.out.println ("Być 16 w the drzewo: " + tree.lookForValue (16));
System.out.println ("Być 20 w the drzewo: " + tree.lookForValue (20));
System.out.println ("Być 21 w the drzewo: " + tree.lookForValue (21));
System.out.println ("Być 28 w the drzewo: " + tree.lookForValue (28));
System.out.println ("Być 29 w the drzewo: " + tree.lookForValue (29));
System.out.println ("Być 30 w the drzewo: " + tree.lookForValue (30));
System.out.println ("Być 39 w the drzewo: " + tree.lookForValue (39));
}
}
|