18 Mart 2015, 14:59
|
#1 |
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
| Java ile Ağaç Yapısı
Kod: Kodu kopyalamak için üzerine çift tıklayın! public class Treee {
Node kok;
public Treee(){
kok = null;
}
public **** ekle(int data){ //ekleme metodu
Node x = new Node();
x.data = data;
if(kok == null){
kok = x;
}
else{
Node current = kok;
Node parent;
while(true){
parent = current;
if(x.data < current.data){
current = current.sol;
if(current == null){
parent.sol = x;
return;
}
}
else{
current = current.sag;
if(current == null){
parent.sag = x;
return;
}
}
}
}
}
public **** delete(int key){
Node current = kok;
Node parent = kok;
boolean isLeftTree = true;
if(kok == null){
System.out.println("Silinecek Ağaç Yok");
}
while(current.data != key){//sileceğimiz elemanı buluyoruz
parent = current;
if(key < current.data){
isLeftTree = true;
current = current.sol;
}
else{
isLeftTree = false;
current = current.sag;
}
if(current == null){
System.out.println("Eleman Bulunamadı");
}
}
if(current.sag == null && current.sol == null){ //sileceğimiz elemanın sağ ve solunda eleman yoksa
if(current == kok){
kok = null;
}
else if(isLeftTree){
parent.sol = null;
}
else
parent.sag = null;
}
else if(current.sag == null){//sileceğimiz elemanın sağında eleman yoksa
if(current == kok){
kok = parent.sol;
}
else if(isLeftTree){
parent.sol = current.sol;
}
else
parent.sag = current.sol;
}
else if(current.sol == null){//sileceğimiz elemanın solunda eleman yoksa
if(current == kok){
kok = parent.sag;
}
else if(isLeftTree){
parent.sol = current.sag;
}
else
parent.sag = current.sag;
}
else{ //sileceğimiz elemanın iki tane ****** varsa
Node successor = getSuccessor(current);
if(current == kok){
kok = successor;
}
else if(isLeftTree){
parent.sol = successor;
}
else{
parent.sag =successor;
}
successor.sol = current.sol;
}
}
private Node getSuccessor(Node delNode) {
Node successorParent = delNode;
Node successor = delNode;
Node current = delNode.sag;
while(current != null){
successorParent = successor;
successor = current;
current = current.sol;
}
if(successor != delNode.sag){
successorParent.sol = successor.sag;
successor.sag = delNode.sag;
}
return successor;
}
public int arama(int data){
Node current = kok;
while(current != null){
if(current.data == data){
return data;
}
else if(data < current.data){
current = current.sol;
}
else
current = current.sag;
}
return -1111;
}
//preorder dolaşma
public **** preOrder(Node kok){
System.out.println(kok.data);
if(kok.sol != null){
preOrder(kok.sol);
}
if(kok.sag != null){
preOrder(kok.sag);
}
}
//inorder dolaşma
public **** inOrder(Node kok){
if(kok.sol != null){
inOrder(kok.sol);
}
System.out.println(kok.data);
if(kok.sag != null){
inOrder(kok.sag);
}
}
//postorder dolaşma
public **** postOrder(Node kok){
if(kok.sol != null){
postOrder(kok.sol);
}
if(kok.sag != null){
postOrder(kok.sag);
}
System.out.println(kok.data);
}
}
__________________ SusKun ve Sessiz Mürekkep... Kullanıcı imzalarındaki bağlantı ve resimleri görebilmek için en az 20 mesaja sahip olmanız gerekir ya da üye girişi yapmanız gerekir.
|
| |