Laboratoriya ishi-6


Download 370.81 Kb.
bet6/6
Sana08.11.2023
Hajmi370.81 Kb.
#1754340
1   2   3   4   5   6
Bog'liq
Laboratoriya ishi-6

return right.contains(item);
}

public boolean isEmpty(){ return data == null; }

T mostLeft(){


if (!left.isEmpty()) return left.mostLeft();
return data;
}

T mostRight(){


if (!right.isEmpty()) return right.mostRight();
return data;
}

public void remove(T item){
if (isEmpty()) return;
if (data.compareTo(item) == 0){
if (left.isEmpty() && right.isEmpty()) clear();
else if (!left.isEmpty()){
T temp = left.mostRight();
remove(temp);
data = temp;
} else {
T temp = right.mostLeft();
remove(temp);
data = temp;
}
} else if (data.compareTo(item) > 0){
if (!left.isEmpty()) left.remove(item);
} else {
if (!right.isEmpty()) right.remove(item);
}
}

public void clear(){
data = null;
left = null;
right = null;
}

public String inOrder(){
if (isEmpty()) return "";
String sl = left.inOrder();
String sr = right.inOrder();
return (sl.isEmpty() ? "" : sl+" ")+data.toString()+(sr.isEmpty() ? "" : " "+sr);
}

public LinkedList inOrderList(){
LinkedList list = new LinkedList<>();
if (isEmpty()) return list;
LinkedList leftList = left.inOrderList();
LinkedList rightList = right.inOrderList();

list.addAll(leftList);


list.add(data);
list.addAll(rightList);

return list;
}

public String preOrder(){
if (isEmpty()) return "";
String sl = left.preOrder();
String sr = right.preOrder();
return data.toString()+(sl.isEmpty() ? "" : " "+sl)+(sr.isEmpty() ? "" : " "+sr);
}

public LinkedList preOrderList(){
LinkedList list = new LinkedList<>();
if (isEmpty()) return list;
LinkedList leftList = left.preOrderList();
LinkedList rightList = right.preOrderList();

list.add(data);


list.addAll(leftList);
list.addAll(rightList);

return list;
}

public String postOrder(){
if (isEmpty()) return "";
String sl = left.postOrder();
String sr = right.postOrder();
return (sl.isEmpty() ? "" : sl+" ")+(sr.isEmpty() ? "" : sr+" ")+data.toString();
}

public LinkedList postOrderList(){
LinkedList list = new LinkedList<>();
if (isEmpty()) return list;
LinkedList leftList = left.preOrderList();
LinkedList rightList = right.preOrderList();

list.addAll(leftList);


list.addAll(rightList);
list.add(data);

return list;
}

public LinkedList leafList(){
LinkedList leaf = new LinkedList<>();

if (data == null) return leaf;
LinkedList leftLeaf = left.leafList();
LinkedList rightLeaf = right.leafList();

if (leftLeaf.isEmpty() && rightLeaf.isEmpty()) leaf.add(data);
if (!leftLeaf.isEmpty()) leaf.addAll(leftLeaf);
if (!rightLeaf.isEmpty()) leaf.addAll(rightLeaf);

return leaf;
}

public int distanceTo(T item){
if (isEmpty()) return -1;
if (data.compareTo(item) == 0) return 0;
if (data.compareTo(item) > 0) {
int t = left.distanceTo(item);
if (t == -1) return -1;
return t+1;
} else {
int t = right.distanceTo(item);
if (t == -1) return -1;
return t + 1;
}
}
}

public static void main(String[] args) {
BinaryTree bt = new BinaryTree<>();

bt.addAll(18, 9, 4, 6, 3, 5, 7, 23, 20, 19, 22, 21, 28, 25, 26, 24);



System.out.println("Binar daraxt : "+bt.inOrder());
System.out.println("19 elementigacha bo'lgan masofa = "+bt.distanceTo(19));
System.out.println("26 elementigacha bo'lgan masofa = "+bt.distanceTo(26));
System.out.println("9 elementigacha bo'lgan masofa = "+bt.distanceTo(9));
}
}


Xulosa:
Men bu laboratoriya ishimda binar daraxt tuzilmasi bilan ishladim. Bu tuzilmada ma’lumotlar saralanib joylanadi, ya’ni ildiz elementdan chap tomondagi elementlar undan kichkina, o’ng tomondagi elementlar esa katta bo’ladi. Binar daraxt rekursiv tuzilmadir. Chunki uning ikkita maydoni, ya’ni chap va o’ng shoxlari ham binar daraxtlardir. Binar daraxtlar o’zida 3 ta maydonni saqlaydi: ma’lumot maydoni, chap va o’ng shoxlar. Binar daraxt hozirgacha hech qaysi dasturlash tili kutubxonasiga qo’shilmagan. Shuning uchun uni o’zimiz yaratishimiz kerak bo’ladi.

Download 370.81 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling