Yazar : Tu çe Kalkavan Web : tugcekalkavan.net admin@tugcekalkavan.net Bili³im Blo u Binary Tree nedir?uygulamas nasl yaplr? Bu bölümde veri yaplarnda önemli bir konu olan binary tree konusunu anlatmaya çal³aca m. 1 Açklama A açlar hiyerar³ik yaplar göstermekte kullanlr. Elektirik devreleri analizinde,matematiksel baz de erlerin gösteriminde,veritabann organize etme i³lemlerinde bu a aç yaplar kullanlr. A aç, dü üm(node) dedi imiz yaplarn toplanmasyla olu³ur.a acn içinde bulunan her elemana dü üm denir. 2 Terminoloji Root: En üstteki dü üme root denir.a, root dü ümdür. Internal dü üm: Bir üstünde bir node bulunan ve en az 1 tane çocu u bulunan dü üme internal node(dü üm) denir.d,e,f internal dü ümlerdir. Yaprak(Leaf)dü ümü: Bir üstünde dü üm bulunan ama hiç çocu u olmayan dü ümlere yaprak(leaf) dü üm denir.örne in G,H,I leaf dü ümlerdir. tugcekalkavan.net Bili³im Blo u Sayfa: 1 / 6
Bir dü ümün düzey (level) veya derinli i (depth) : Bir dü ümün kök dü ümden olan uzakl dr.örne in D dü ümünün düzeyi veya derinli i 2'dir. A acn derinli i (depth of tree) : En derindeki yapra n derinli i veya yüksekli idir.örne in ³ekildeki a acn derinli i 3'tür. Çocuk(child) dü üm: Bir dü ümün bacaklarna ba lanan dü ümlerdir.örne in D ve E,B'nin çocu udur(child). Parent dü üm:bir dü üm, sa ve sol ba lar ile ba - land üst dü üme denir.örne in D ve E'nin parent B'dir. Bu temel kavramlar ö rendikten sonra binary tree'yi uygulamaya geçirebiliriz. 3 Dola³ma yöntemleri Sistematik bir ³ekilde bütün dü ümleri ziyaret edebiliriz.bunun için temel olarak 3 tip dola³ma yöntemi vardr.dola³ma yöntemlerin isimleri dü ümün ne zaman ziyaret edilece ini ifade eder. Preorder Traversal Dü ümü ziyaret et Sol subtree'yi traverse et. Sa subtree'yi traverse et. Inorder Traversal Left subtree yi traverse et. Dü ümü ziyaret et. Right subtree yi traverse et. Postorder Traversal Left subtree yi traverse et. Right subtree yi traverse et. Dü ümü ziyaret et. tugcekalkavan.net Bili³im Blo u Sayfa: 2 / 6
Preorder Traversal: 3 8 4 7 2 5 6 1 Inorder Traversal: 7 4 8 2 3 6 5 1 Postorder Traversal: 7 4 2 8 6 1 5 3 4 Kod Herhangi bir text editorunde binary.h adnda bir c++ dosyas açalm. #include<iostream> struct Node int data; Node *left; Node *right; ; class BinaryTree tugcekalkavan.net Bili³im Blo u Sayfa: 3 / 6
public: BinaryTree(); void PreorderTraversal(); void PostorderTraversal(); void InorderTraversal(); void BuildTree(); private: Node *root; void PRET(Node *node); void POSTT(Node *node); void INT(Node *node); Node *CreateNode(int data); ; BinaryTree::BinaryTree() root = NULL; Node *BinaryTree::CreateNode(int data) Node *n = new Node; n->data=data; n->left=null; n->right=null; return n; void BinaryTree::BuildTree() //Yeni bir root yarat\t1\i yoruz. root = CreateNode(3); //8 ve 5 düÿümlerini yarat\t1\i yoruz Node *n1 = CreateNode(8); Node *n2 = CreateNode(5); root->left = n1; root->right = n2; Node *n3 = CreateNode(4); Node *n4 = CreateNode(2); n1->left = n3; n1->right = n4; tugcekalkavan.net Bili³im Blo u Sayfa: 4 / 6
Node *n5 = CreateNode(7); n3->left = n5; void BinaryTree::PreorderTraversal() std::cout << "...Preorder Traversal..." << std::endl; BinaryTree::PRET(root); void BinaryTree::PostorderTraversal() std::cout << "...Postorder Traversal..." << std::endl; BinaryTree::POSTT(root); void BinaryTree::InorderTraversal() std::cout << "...Inorder Traversal..." << std::endl; BinaryTree::INT(root); void BinaryTree::PRET(Node *node) if (node!= NULL) std::cout << node->data << std::endl; BinaryTree::PRET(node->left); BinaryTree::PRET(node->right); void BinaryTree::POSTT(Node *node) if (node!= NULL) BinaryTree::POSTT(node->left); BinaryTree::POSTT(node->right); std::cout << node->data << std::endl; void BinaryTree::INT(Node *node) tugcekalkavan.net Bili³im Blo u Sayfa: 5 / 6
if (node!= NULL) BinaryTree::INT(node->left); std::cout << node->data << std::endl; BinaryTree::INT(node->right); imdide test etmek için test.cpp adnda bir dosya açalm ve ³u kodlar ekleyelim. #include <iostream> #include "binarytree.h" using namespace std; int main() BinaryTree tree; tree.buildtree(); tree.preordertraversal(); tree.postordertraversal(); tree.inordertraversal(); system("pause"); return 0; 5 Sonuç Böylece binary tree nedir,nasl uygulanr görmü³ olduk. Tu çe. tugcekalkavan.net Bili³im Blo u Sayfa: 6 / 6