//подключение стандартных классов import java.applet.*; import java.awt.*; import java.lang.NumberFormatException; //Определение нового класса bin public class bin extends Applet{ //класс: узел бинарного дерева public class Node{ int num; //данные узла Node left,right; //ссылки на потомков //конструктор узла Node(int k){left=null;right=null; num=k;} //метод класса: добавление нового элемента void addElement(Node tmp){ //добавление элемента в левое поддерево if(tmp.numthis.num){ if(this.right!=null)this.right.addElement(tmp); else {this.right=tmp;updStat();} } }; //метод класса: поиск элемента Node find(int k){ Node a=null; if(this!=null){ if(this.num==k)return this; //элемент найден if(k>this.num&&this.right!=null){ //вызов метода для правого поддерева a=this.right.find(k);} else{ //вызов метода для левого поддерева if(this.right!=null) a=this.left.find(k);} } return a; //возрат найденого элемента }; } //элементы окна апплета Button putElement, findElement; //кнопки TextField txtf; //текстовое поле Label l,ElCount; //текстовые метки Node root=null; //корень дерева int count=0; //кол-во элементов дерева //процедура обновления статистических данных о дереве public void updStat(){ count++; ElCount.setText("Elements count: "+count); } //инициализация апплета public void init(){ //установка менеджера размещения setLayout(new FlowLayout(FlowLayout.CENTER)); //добавление элементов add(new Label("Number:")); add(txtf=new TextField("",10)); add(putElement=new Button("Add number")); add(findElement=new Button("Find Element")); add(l=new Label(" ")); add(ElCount=new Label("Elements Count: 0")); } //обработка событий public boolean action(Event e,Object o){ int num=0; String snum=txtf.getText(); try{ num=Integer.parseInt(snum,10); //преобразование строки в число }catch(NumberFormatException q){ //ошибка преобразования l.setText("Error adding: "+snum); txtf.setText(""); return false; } //нажата клавиша Добавления элемента if(o.equals("Add number")){ //проверка дерева на пустоту if(root!=null)root.addElement(new Node(num)); else {root=new Node(num); updStat();} } //Поиск элемента if(o.equals("Find Element")){ //поиск заданого элмента if(root.find(num)!=null)l.setText("Found: "+num); else l.setText("NotFound: "+num); } txtf.setText(""); txtf.requestFocus(); return true; } }