Всем доброго времени суток,
Ситуация такая: Дано вот такое несовсем понятное задание, но оно описано именно так, как я и выкладываю.
Дан код дерева, нужно закончить его редактировать, т.е. закончить удаление листка (только того значения, оставляя те листья, которые были внутри того листка).
Честно говоря, не понимаю задания, что конкретно нужно сделать? Я в Java не силён, а потому несовсем представляю, как можно реализовать удаление.
List.java:
| Код | package derevo; public class List { int znacenije; List left; List right; List roditel; public List(int l, List t) { znacenije = l; roditel = t; } public void dobavitList(int sk, List t) { if (sk > znacenije) { if (right != null) { right.dobavitList(sk, this.right); } else { right = new List(sk, t); } } else if (sk < znacenije) { if (left != null) { left.dobavitList(sk, this.left); } else { left = new List(sk, t); } } } public void printList(String tabas) { if (left != null) { left.printList(tabas + "\t"); } System.out.println(tabas + " " + this.znacenije+" - "+((roditel!=null)?roditel.znacenije:0)); if (right != null) { right.printList(tabas + "\t"); } } public List find(int sk) { if (this.znacenije == sk) { return this; } else { if (sk > this.znacenije && right != null) { return right.find(sk); } else if (sk < this.znacenije && left != null) { return left.find(sk); } } return null; } @Override public String toString() { return "List{" + "znacenije=" + znacenije+" "+roditel.znacenije + '}'; } }
|
Derevce.java:
| Код | package derevo; public class Derevce { List verhushka; public void dobavitList(int sk) { if (verhushka != null) { verhushka.dobavitList(sk, verhushka); } else { verhushka = new List(sk, null); } } public void udalitList(int sk) { List sl = findList(sk); if (sl.right == null && sl.right == null) { if (sk > sl.roditel.znacenije) { sl.roditel.right = null; } else if (sk < sl.roditel.znacenije) { sl.roditel.left = null; } } /*Здесь ещё нужно добавить код, который бы удалял и те листья, у которых есть подлистья (т.е. правую, левую либо обе ветки) */ } public List findList(int sk) { if (verhushka != null) { return verhushka.find(sk); } return null; } public void pechatat() { if (verhushka != null) { verhushka.printList(""); } else { System.out.println("Derevo pustoje"); } } }
|
PrimerDereva.java:
| Код | package derevo; public class PrimerDereva { public static void main(String[] args) { Derevce m = new Derevce(); //m.spausdinti(); m.dobavitList(4); m.dobavitList(2); m.dobavitList(3); m.dobavitList(1); m.dobavitList(6); m.dobavitList(9); m.dobavitList(19); m.pechatat(); m.udalitList(19); m.pechatat(); m.udalitList(2); m.pechatat(); List a = m.findList(23); System.out.println(a); } }
|
|