<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: İkili Arama Ağacı (Binary Search Tree)</title>
	<atom:link href="http://www.bilgisayarkavramlari.com/2008/05/07/ikili-arama-agaci-binary-search-tree/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bilgisayarkavramlari.com/2008/05/07/ikili-arama-agaci-binary-search-tree/</link>
	<description>www.bilgisayarkavramlari.com</description>
	<lastBuildDate>Thu, 09 Feb 2012 15:35:42 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: med-cezir</title>
		<link>http://www.bilgisayarkavramlari.com/2008/05/07/ikili-arama-agaci-binary-search-tree/comment-page-1/#comment-64641</link>
		<dc:creator>med-cezir</dc:creator>
		<pubDate>Sun, 15 Jan 2012 20:45:55 +0000</pubDate>
		<guid isPermaLink="false">http://shedai.net/bilgisayar/2008/05/07/ikili-arama-agaci-binary-search-tree/#comment-64641</guid>
		<description>Hocam oldukça geç gördüm cevabınızı...
Şöyle ki bizim ilk proje ödevimiz BAĞLI LİSTEyle ögrenci kayıtları listesi hazırlayıp,istenenleri yapmaktı.2.projemiz ise İKİLİ ARAMA AĞACIyla öğrenci kayıtları listesini yapmaktı.Ve bu iki ödevde de istenen işlemler aynıydı...Ben ödevi yarım yapabildim:(

Hocam siteniz çok verimli ve de dolu dolu.Özellikle de görsel anlatımlı dersler çok iyi.Vizelerde sıralama algoritmalarından yararlandım,finale de kruskal,prim,dijkstra...dan inş:)) Maşallah.Allah gayretinizi artırsın.Emeğinize sağlık.Çok teşekkürler...</description>
		<content:encoded><![CDATA[<p>Hocam oldukça geç gördüm cevabınızı&#8230;<br />
Şöyle ki bizim ilk proje ödevimiz BAĞLI LİSTEyle ögrenci kayıtları listesi hazırlayıp,istenenleri yapmaktı.2.projemiz ise İKİLİ ARAMA AĞACIyla öğrenci kayıtları listesini yapmaktı.Ve bu iki ödevde de istenen işlemler aynıydı&#8230;Ben ödevi yarım yapabildim:(</p>
<p>Hocam siteniz çok verimli ve de dolu dolu.Özellikle de görsel anlatımlı dersler çok iyi.Vizelerde sıralama algoritmalarından yararlandım,finale de kruskal,prim,dijkstra&#8230;dan inş:)) Maşallah.Allah gayretinizi artırsın.Emeğinize sağlık.Çok teşekkürler&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Şadi Evren ŞEKER</title>
		<link>http://www.bilgisayarkavramlari.com/2008/05/07/ikili-arama-agaci-binary-search-tree/comment-page-1/#comment-64537</link>
		<dc:creator>Şadi Evren ŞEKER</dc:creator>
		<pubDate>Mon, 02 Jan 2012 08:43:20 +0000</pubDate>
		<guid isPermaLink="false">http://shedai.net/bilgisayar/2008/05/07/ikili-arama-agaci-binary-search-tree/#comment-64537</guid>
		<description>Hocanızın ikili arama ağacı için bunları istediğinden emin misiniz? Sanki bağlı liste (linked list) gibi duruyor. Örneğin sıralıKopya için listenin sıralı ve yeni bir kopyası döndürülür demişsiniz. Ayrıca ikili arama ağacında zaten sıralama gibi bir işlem yapılmaz sadece dolaşırken sıralanmış olunur. 

Yine de ikili arama ağacı olduğuna eminseniz aşağıdaki bağlantıda bulunan kodlar işinize yarayabilir. Örneğin iki adet ağacı alıp toplayan koddan esinlenebilirsiniz. Sanırım yukarıdaki kodların tamamına yakını bu adreste çeşitli kodlar altında bulunuyor. 

http://www.sadievrenseker.com/datastr/

Başarılar</description>
		<content:encoded><![CDATA[<p>Hocanızın ikili arama ağacı için bunları istediğinden emin misiniz? Sanki bağlı liste (linked list) gibi duruyor. Örneğin sıralıKopya için listenin sıralı ve yeni bir kopyası döndürülür demişsiniz. Ayrıca ikili arama ağacında zaten sıralama gibi bir işlem yapılmaz sadece dolaşırken sıralanmış olunur. </p>
<p>Yine de ikili arama ağacı olduğuna eminseniz aşağıdaki bağlantıda bulunan kodlar işinize yarayabilir. Örneğin iki adet ağacı alıp toplayan koddan esinlenebilirsiniz. Sanırım yukarıdaki kodların tamamına yakını bu adreste çeşitli kodlar altında bulunuyor. </p>
<p><a href="http://www.sadievrenseker.com/datastr/" rel="nofollow">http://www.sadievrenseker.com/datastr/</a></p>
<p>Başarılar</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: med-cezir</title>
		<link>http://www.bilgisayarkavramlari.com/2008/05/07/ikili-arama-agaci-binary-search-tree/comment-page-1/#comment-64533</link>
		<dc:creator>med-cezir</dc:creator>
		<pubDate>Sun, 01 Jan 2012 18:34:18 +0000</pubDate>
		<guid isPermaLink="false">http://shedai.net/bilgisayar/2008/05/07/ikili-arama-agaci-binary-search-tree/#comment-64533</guid>
		<description>Hocam selamlar.Yukarda dugum ekle,ara,yazdir kodlarına örnekler yazmışsınız ya, bizim hocamız da ikili arama ağacıyla bunlardan ayrı olarak güncelleme,kopyalama,sıralı kopyalama,birleştir(kopyalananla,ana kodu) gibi kodlamalar istiyor.Bunları nasıl yazacağım hakkında bilgim yok.kısaca anlayacağım şekilde bu kodlara örnekler yazabilir misiniz.


1-	Aşağıdaki özellikleri sağlayan bir “liste” veri yapısını programlayarak gerçekleyiniz:
a.	Liste elemanlarının her biri aşağıdaki bileşenlere sahip olan öğrenci kayıtlarıdır. Öğrenci kayıtlarını birbirlerinden ayırt eden tek bileşen öğrenci numarasıdır.
-	Ad
-	Soyad
-	Fakülte
-	Bölüm
-	Numara
-	GNO (genel not ortalaması)
-	İkametgah İli
b.	Öğrenci kayıtları listesi, “İkili Arama Ağacı” (Binary Search Tree) modeli ve dinamik bellek ayırımı kullanılarak gerçeklenecektir.
c.	Veri yapısı aşağıdaki işlemleri sağlayacaktır.
-	L  oluştur()
-	L  ekle(L, e)
-	e	 ara(L, e)			(bir kayıdı öğrenci numarası ile ara)
-	L  çıkar(L, e)				(çıkarılacak kayıt öğrenci numarası ile aranacak)
-	L  güncelle(L, e)
-	L’ kopya(L)				(listenin yeni bir tıpkı kopyası dönülür)
-	L’ sıralıKopya(L)			(listenin sıralı ve yeni bir kopyası dönülür)
-	L  birleştir(L1, L2)
-	yazdır(L)
-	L  boşalt(L)


Yardımcı olursanız sevinirim...</description>
		<content:encoded><![CDATA[<p>Hocam selamlar.Yukarda dugum ekle,ara,yazdir kodlarına örnekler yazmışsınız ya, bizim hocamız da ikili arama ağacıyla bunlardan ayrı olarak güncelleme,kopyalama,sıralı kopyalama,birleştir(kopyalananla,ana kodu) gibi kodlamalar istiyor.Bunları nasıl yazacağım hakkında bilgim yok.kısaca anlayacağım şekilde bu kodlara örnekler yazabilir misiniz.</p>
<p>1-	Aşağıdaki özellikleri sağlayan bir “liste” veri yapısını programlayarak gerçekleyiniz:<br />
a.	Liste elemanlarının her biri aşağıdaki bileşenlere sahip olan öğrenci kayıtlarıdır. Öğrenci kayıtlarını birbirlerinden ayırt eden tek bileşen öğrenci numarasıdır.<br />
-	Ad<br />
-	Soyad<br />
-	Fakülte<br />
-	Bölüm<br />
-	Numara<br />
-	GNO (genel not ortalaması)<br />
-	İkametgah İli<br />
b.	Öğrenci kayıtları listesi, “İkili Arama Ağacı” (Binary Search Tree) modeli ve dinamik bellek ayırımı kullanılarak gerçeklenecektir.<br />
c.	Veri yapısı aşağıdaki işlemleri sağlayacaktır.<br />
-	L  oluştur()<br />
-	L  ekle(L, e)<br />
-	e	 ara(L, e)			(bir kayıdı öğrenci numarası ile ara)<br />
-	L  çıkar(L, e)				(çıkarılacak kayıt öğrenci numarası ile aranacak)<br />
-	L  güncelle(L, e)<br />
-	L’ kopya(L)				(listenin yeni bir tıpkı kopyası dönülür)<br />
-	L’ sıralıKopya(L)			(listenin sıralı ve yeni bir kopyası dönülür)<br />
-	L  birleştir(L1, L2)<br />
-	yazdır(L)<br />
-	L  boşalt(L)</p>
<p>Yardımcı olursanız sevinirim&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: nick-name</title>
		<link>http://www.bilgisayarkavramlari.com/2008/05/07/ikili-arama-agaci-binary-search-tree/comment-page-1/#comment-64492</link>
		<dc:creator>nick-name</dc:creator>
		<pubDate>Mon, 26 Dec 2011 20:50:54 +0000</pubDate>
		<guid isPermaLink="false">http://shedai.net/bilgisayar/2008/05/07/ikili-arama-agaci-binary-search-tree/#comment-64492</guid>
		<description>hata verdiği kısmı soracaktım onu asagıdaki sekilde oldugu gibi return ifadesini bos donerek sagladınız heralde

if(d == NULL)
       return;</description>
		<content:encoded><![CDATA[<p>hata verdiği kısmı soracaktım onu asagıdaki sekilde oldugu gibi return ifadesini bos donerek sagladınız heralde</p>
<p>if(d == NULL)<br />
       return;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Şadi Evren ŞEKER</title>
		<link>http://www.bilgisayarkavramlari.com/2008/05/07/ikili-arama-agaci-binary-search-tree/comment-page-1/#comment-64490</link>
		<dc:creator>Şadi Evren ŞEKER</dc:creator>
		<pubDate>Mon, 26 Dec 2011 14:06:39 +0000</pubDate>
		<guid isPermaLink="false">http://shedai.net/bilgisayar/2008/05/07/ikili-arama-agaci-binary-search-tree/#comment-64490</guid>
		<description>Sorunuzun cevabı zaten sitede bulunuyor:

http://www.bilgisayarkavramlari.com/2008/12/27/dizgi-karsilastirma-string-comparison/

ikinci sorunuzun cevabı ise ilgili yorumda yazılan fonksiyonun kendisidir ve fonksiyonun ismi dugum_ekle olarak geçmiştir. 

Başarılar</description>
		<content:encoded><![CDATA[<p>Sorunuzun cevabı zaten sitede bulunuyor:</p>
<p><a href="http://www.bilgisayarkavramlari.com/2008/12/27/dizgi-karsilastirma-string-comparison/" rel="nofollow">http://www.bilgisayarkavramlari.com/2008/12/27/dizgi-karsilastirma-string-comparison/</a></p>
<p>ikinci sorunuzun cevabı ise ilgili yorumda yazılan fonksiyonun kendisidir ve fonksiyonun ismi dugum_ekle olarak geçmiştir. </p>
<p>Başarılar</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ali poyraz</title>
		<link>http://www.bilgisayarkavramlari.com/2008/05/07/ikili-arama-agaci-binary-search-tree/comment-page-1/#comment-64485</link>
		<dc:creator>ali poyraz</dc:creator>
		<pubDate>Sun, 25 Dec 2011 17:01:25 +0000</pubDate>
		<guid isPermaLink="false">http://shedai.net/bilgisayar/2008/05/07/ikili-arama-agaci-binary-search-tree/#comment-64485</guid>
		<description>mrb hocam kodda bu kısmı anlayamadım

 if(strcmp(k,d-&gt;kelime)&gt;0)

birde hocam  dugum_ekle: hangi çocuk bossa o tarafa dugum ekler. Her ikisi
de doluysa hata verir. */

yazdıgınız kodda bu sartı gercekleyen kısım  neresi</description>
		<content:encoded><![CDATA[<p>mrb hocam kodda bu kısmı anlayamadım</p>
<p> if(strcmp(k,d-&gt;kelime)&gt;0)</p>
<p>birde hocam  dugum_ekle: hangi çocuk bossa o tarafa dugum ekler. Her ikisi<br />
de doluysa hata verir. */</p>
<p>yazdıgınız kodda bu sartı gercekleyen kısım  neresi</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Şadi Evren ŞEKER</title>
		<link>http://www.bilgisayarkavramlari.com/2008/05/07/ikili-arama-agaci-binary-search-tree/comment-page-1/#comment-64470</link>
		<dc:creator>Şadi Evren ŞEKER</dc:creator>
		<pubDate>Sat, 24 Dec 2011 01:25:41 +0000</pubDate>
		<guid isPermaLink="false">http://shedai.net/bilgisayar/2008/05/07/ikili-arama-agaci-binary-search-tree/#comment-64470</guid>
		<description>Aşağıda müsvette bir şekilde kodları veriyorum. Çalıştırıp deneme şansım olmadı ancak sanırım fikir verir:
&lt;pre&gt;
Dugum * dugum_ekle(Dugum *d, char *k) {
   if(d == NULL)
     return (Dugum *)malloc(sizeof(Dugum));
   if(strcmp(k,d-&gt;kelime)&gt;0){
     d-&gt;sol = dugum_ekle(d-&gt;sol,k);
     return d;
   }
   else{
     d-&gt;sag = dugum_ekle(d-&gt;sag,k);
     return d;
   }
}

void dugum_yazdir ( Dugum d){
    if(d == NULL)
       return;
    dugum_yazdir(d.sol);
    printf(&quot; %s&quot;, d.kelime);
    dugum_yazdir(d.sağ);
}
&lt;/pre&gt;
Sanırım yukarıdaki kodlamalarda hata yoktur. Açıkçası ikinci fonksiyon için Dugum *d şeklinde parametre almayı tercih ederdim ancak sorunuzu bu şekilde sorduğunuz için soruya benzer prototipte kodladım.

Ayrıca daha önce verdiğim veri yapıları dersinde benzer çok sayıda kodu yazıp yayınlamıştım:

http://www.sadievrenseker.com/vy/

Adresindeki 8. hafta koduna ve 

http://www.sadievrenseker.com/datastr2009/

Adresindeki 8 ve 9. hafta kodlarına bakmanızda yarar var. 

Başarılar</description>
		<content:encoded><![CDATA[<p>Aşağıda müsvette bir şekilde kodları veriyorum. Çalıştırıp deneme şansım olmadı ancak sanırım fikir verir:</p>
<pre>
Dugum * dugum_ekle(Dugum *d, char *k) {
   if(d == NULL)
     return (Dugum *)malloc(sizeof(Dugum));
   if(strcmp(k,d->kelime)>0){
     d->sol = dugum_ekle(d->sol,k);
     return d;
   }
   else{
     d->sag = dugum_ekle(d->sag,k);
     return d;
   }
}

void dugum_yazdir ( Dugum d){
    if(d == NULL)
       return;
    dugum_yazdir(d.sol);
    printf(" %s", d.kelime);
    dugum_yazdir(d.sağ);
}
</pre>
<p>Sanırım yukarıdaki kodlamalarda hata yoktur. Açıkçası ikinci fonksiyon için Dugum *d şeklinde parametre almayı tercih ederdim ancak sorunuzu bu şekilde sorduğunuz için soruya benzer prototipte kodladım.</p>
<p>Ayrıca daha önce verdiğim veri yapıları dersinde benzer çok sayıda kodu yazıp yayınlamıştım:</p>
<p><a href="http://www.sadievrenseker.com/vy/" rel="nofollow">http://www.sadievrenseker.com/vy/</a></p>
<p>Adresindeki 8. hafta koduna ve </p>
<p><a href="http://www.sadievrenseker.com/datastr2009/" rel="nofollow">http://www.sadievrenseker.com/datastr2009/</a></p>
<p>Adresindeki 8 ve 9. hafta kodlarına bakmanızda yarar var. </p>
<p>Başarılar</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: gokhan.taskin</title>
		<link>http://www.bilgisayarkavramlari.com/2008/05/07/ikili-arama-agaci-binary-search-tree/comment-page-1/#comment-64467</link>
		<dc:creator>gokhan.taskin</dc:creator>
		<pubDate>Fri, 23 Dec 2011 22:41:06 +0000</pubDate>
		<guid isPermaLink="false">http://shedai.net/bilgisayar/2008/05/07/ikili-arama-agaci-binary-search-tree/#comment-64467</guid>
		<description>mrb şadi hocam benim odevim var c de agac yapısıyla ilgili ben gerceklemeye calıstım ama gercekleyemedim yardımcı olursanız sevinirim 

oncelikle odevde bana verilen


typedef struct _Dugum {
char *kelime;
struct _Dugum *sol; /* sol cocuk */
struct _Dugum *sag; /* sag cocuk */
} Dugum;
Dugum *kok;
Ağaç yapısı programlama yapılarında sıklıkla kullanılan soyut veri türlerindendir (SVT). İkil
ağaç maksimum iki çocuğu olan özel ağaçtır. Ağaç ise özyineli bir tarifle verilir: “ağacın her bir
düğümü, kökü ve/veya sol/sağ çocuklu ağaçtır”. Yani her bir düğümde bir değer (burada “kelime”),
sol ve sağında başka bir ağaç uzanır. Bu amaçla ağaçtaki her bir düğümü temsilen Dugum SVT
verilmiştir. Buna göre,

ve benden istenenler ise



1)/* dugum_ekle: hangi çocuk bossa o tarafa dugum ekler. Her ikisi
de doluysa hata verir. */
Dugum dugum_ekle(Dugum *d, char *k) {







}



2)/* dugum_yazdir: d dugum listesini sirali bir sekilde yazdir. *
*
Ozyineli olarak once sol, sonra dugum degeri, en son sag */
void dugum_yazdir(Dugum d) {





}

1 ve 2 yi gerceklemem gerekiyor hocam yardımcı olursanız cok sevinirim</description>
		<content:encoded><![CDATA[<p>mrb şadi hocam benim odevim var c de agac yapısıyla ilgili ben gerceklemeye calıstım ama gercekleyemedim yardımcı olursanız sevinirim </p>
<p>oncelikle odevde bana verilen</p>
<p>typedef struct _Dugum {<br />
char *kelime;<br />
struct _Dugum *sol; /* sol cocuk */<br />
struct _Dugum *sag; /* sag cocuk */<br />
} Dugum;<br />
Dugum *kok;<br />
Ağaç yapısı programlama yapılarında sıklıkla kullanılan soyut veri türlerindendir (SVT). İkil<br />
ağaç maksimum iki çocuğu olan özel ağaçtır. Ağaç ise özyineli bir tarifle verilir: “ağacın her bir<br />
düğümü, kökü ve/veya sol/sağ çocuklu ağaçtır”. Yani her bir düğümde bir değer (burada “kelime”),<br />
sol ve sağında başka bir ağaç uzanır. Bu amaçla ağaçtaki her bir düğümü temsilen Dugum SVT<br />
verilmiştir. Buna göre,</p>
<p>ve benden istenenler ise</p>
<p>1)/* dugum_ekle: hangi çocuk bossa o tarafa dugum ekler. Her ikisi<br />
de doluysa hata verir. */<br />
Dugum dugum_ekle(Dugum *d, char *k) {</p>
<p>}</p>
<p>2)/* dugum_yazdir: d dugum listesini sirali bir sekilde yazdir. *<br />
*<br />
Ozyineli olarak once sol, sonra dugum degeri, en son sag */<br />
void dugum_yazdir(Dugum d) {</p>
<p>}</p>
<p>1 ve 2 yi gerceklemem gerekiyor hocam yardımcı olursanız cok sevinirim</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Şadi Evren ŞEKER</title>
		<link>http://www.bilgisayarkavramlari.com/2008/05/07/ikili-arama-agaci-binary-search-tree/comment-page-1/#comment-63641</link>
		<dc:creator>Şadi Evren ŞEKER</dc:creator>
		<pubDate>Mon, 30 May 2011 12:15:25 +0000</pubDate>
		<guid isPermaLink="false">http://shedai.net/bilgisayar/2008/05/07/ikili-arama-agaci-binary-search-tree/#comment-63641</guid>
		<description>Iterative tree search algoritması, ağacın döngü ile arandığı algoritmadır. Basitçe bir döngü içerisinde bütün düğümler dolaşılır. 
Sorunuzda verilen örnek ağaç için 56 sayısını bulurken bu döngünün kaç kere döndüğü sorulmuştur. 
Anlaşılması için öncelikle bu algoritmanın döngüsünü yazalım:
&lt;pre&gt;
a = aranan anahtar
i = kök düğüm 
while( i != NULL){
   if(i==a)
      bulundu
   else if( i &lt; a )
      i=i.sağ
   else
      i=i.sol
}
&lt;/pre&gt;
Yukarıdaki döngüde basitçe bir &lt;a href=&quot;http://www.bilgisayarkavramlari.com/2007/05/03/pointer-gosterici/&quot; rel=&quot;nofollow&quot;&gt;gösterici (iterator)&lt;/a&gt; ağaç üzerinde hareket etmekte ve aranan değere göre ağaçtaki düğümde sola veya sağa yönelmektedir. 

Sorunuz için 56 sayısı, aranırken döngü öncelikle kökten başlayacak ve birinci dönüşten sonra 50 &lt; 56 olduğu için ilk dönüşten sonra i = 60 olacaktır. 
ikinci dönüşte 56 &lt; 60 olduğu için ağacın soluna yönlenecek ve nihayet aranan sayıyı bulacaktır. 
Bu durumda arama algoritmamızdaki while döngüsü 2 kere dönmüş olacaktır. 

b şıkkına gelince 47 sayısının eklenmesi sırasında önce 50&#039;nin soluna sonra 40&#039;ın sağına ve sonra 45&#039;in sağına gidilerek bulunan NULL değere ekleme işlemi yapılır ve ağaç aşağıdaki hali alır:
&lt;pre&gt;
          50
        /    \       
      40      60
     /  \    /  \        
    35  45  56  70
          \
          47
&lt;/pre&gt;
c şıkkında 40 sayısının silinmesi sorulmuş. Ağaçtan silme işlemi yapılırken, silinen değer &lt;a href=&quot;http://www.bilgisayarkavramlari.com/2008/05/07/agaclar-tree/&quot; rel=&quot;nofollow&quot;&gt;yaprak düğüm ise (leaf node) &lt;/a&gt;doğrudan silinir ancak bunun dışındaki düğümler silinirken sağdakilerin en küçüğü (min of right) veya soldakilerin en büyüğü (max of left) ile yer değiştirilir. 
iki yöntemde doğrudur ve örneğin sizin sorunuz için biz soldakilerin en büyüğünü getirmek isteyelim:
&lt;pre&gt;
          50
        /    \       
      35      60
        \    /  \        
        45  56  70
          \
          47
&lt;/pre&gt;
Şeklinde silinmiş olur. </description>
		<content:encoded><![CDATA[<p>Iterative tree search algoritması, ağacın döngü ile arandığı algoritmadır. Basitçe bir döngü içerisinde bütün düğümler dolaşılır.<br />
Sorunuzda verilen örnek ağaç için 56 sayısını bulurken bu döngünün kaç kere döndüğü sorulmuştur.<br />
Anlaşılması için öncelikle bu algoritmanın döngüsünü yazalım:</p>
<pre>
a = aranan anahtar
i = kök düğüm
while( i != NULL){
   if(i==a)
      bulundu
   else if( i &lt; a )
      i=i.sağ
   else
      i=i.sol
}
</pre>
<p>Yukarıdaki döngüde basitçe bir <a href="http://www.bilgisayarkavramlari.com/2007/05/03/pointer-gosterici/" rel="nofollow">gösterici (iterator)</a> ağaç üzerinde hareket etmekte ve aranan değere göre ağaçtaki düğümde sola veya sağa yönelmektedir. </p>
<p>Sorunuz için 56 sayısı, aranırken döngü öncelikle kökten başlayacak ve birinci dönüşten sonra 50 &lt; 56 olduğu için ilk dönüşten sonra i = 60 olacaktır.<br />
ikinci dönüşte 56 &lt; 60 olduğu için ağacın soluna yönlenecek ve nihayet aranan sayıyı bulacaktır.<br />
Bu durumda arama algoritmamızdaki while döngüsü 2 kere dönmüş olacaktır. </p>
<p>b şıkkına gelince 47 sayısının eklenmesi sırasında önce 50&#8242;nin soluna sonra 40&#8242;ın sağına ve sonra 45&#8242;in sağına gidilerek bulunan NULL değere ekleme işlemi yapılır ve ağaç aşağıdaki hali alır:</p>
<pre>
          50
        /    \
      40      60
     /  \    /  \
    35  45  56  70
          \
          47
</pre>
<p>c şıkkında 40 sayısının silinmesi sorulmuş. Ağaçtan silme işlemi yapılırken, silinen değer <a href="http://www.bilgisayarkavramlari.com/2008/05/07/agaclar-tree/" rel="nofollow">yaprak düğüm ise (leaf node) </a>doğrudan silinir ancak bunun dışındaki düğümler silinirken sağdakilerin en küçüğü (min of right) veya soldakilerin en büyüğü (max of left) ile yer değiştirilir.<br />
iki yöntemde doğrudur ve örneğin sizin sorunuz için biz soldakilerin en büyüğünü getirmek isteyelim:</p>
<pre>
          50
        /    \
      35      60
        \    /  \
        45  56  70
          \
          47
</pre>
<p>Şeklinde silinmiş olur.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: gizem</title>
		<link>http://www.bilgisayarkavramlari.com/2008/05/07/ikili-arama-agaci-binary-search-tree/comment-page-1/#comment-63630</link>
		<dc:creator>gizem</dc:creator>
		<pubDate>Wed, 25 May 2011 23:59:14 +0000</pubDate>
		<guid isPermaLink="false">http://shedai.net/bilgisayar/2008/05/07/ikili-arama-agaci-binary-search-tree/#comment-63630</guid>
		<description>şekil için özür dilerim kopy paste yapmaya çalıştım fakat hatalı olmuş sanırım. root 50. sağında 60 var. 60 ın sağında 70,solunda 56. 50 nin solunda 40. 40 ın sağında 45,solunda 35 var.anlatmaya çalıştım ama oldu sanırım:)</description>
		<content:encoded><![CDATA[<p>şekil için özür dilerim kopy paste yapmaya çalıştım fakat hatalı olmuş sanırım. root 50. sağında 60 var. 60 ın sağında 70,solunda 56. 50 nin solunda 40. 40 ın sağında 45,solunda 35 var.anlatmaya çalıştım ama oldu sanırım:)</p>
]]></content:encoded>
	</item>
</channel>
</rss>

