Anda di halaman 1dari 6

TIU

Mahasiswa mengetahui dan memahami konsep pohon dan representasinya pada


bahasa pemrograman

TIK:

1. Menjelaskan tentang operasi-operasi yang ada pada pohon biner


2. Menjelaskan tentang cara mengunjungi pohon
3. Menjelaskan tentang pohon ekspresi dan cara-cara untuk mengunjunginya

TREE

Dalam ilmu komputer, tree adalah sebuah struktur data yang secara bentuk
menyerupai sebuah pohon, yang terdiri dari serangkaian node (simpul) yang saling
berhubungan. Node-node tersebut dihubungkan oleh sebuah vektor. Setiap node
dapat memiliki 0 atau lebih node anak (child). Sebuah node yang memiliki node
anak disebut node induk (parent). Sebuah node anak hanya memiliki satu node
induk. Sesuai konvensi ilmu komputer, tree bertumbuh ke bawah, tidak seperti
pohon di dunia nyata yang tumbuh ke atas. Dengan demikian node anak akan
digambarkan berada di bawah node induknya.

Definisi Tree

Tree merupakan salah satu bentuk struktur data tidak linier yang
menggambarkan hubungan yang bersifat hierarkis (hubungan one to many) antara
elemen-elemen. Tree bisa didefinisikan sebagai kumpulan simpul/node dengan satu
elemen khusus yang disebut root. Node lainnya terbagi menjadi himpunan-
himpunan yang saling tak berhubungan satu sama lain (disebut subtree), untuk
lebih jelasnya, dibawah ini akan diuraikan istilah-istilah umum dalam tree:

Predecessor Node yang berada diatas node tertentu

Successor Node yang berada dibawah node tertentu

Ancestor Seluruh node yang terletak sebelum node tertentu dan


terletak pada jalur yang sama
Descendant Seluruh node yang terletak sesudah node tertentu dan
terletak pada jalur yang sama

Parent Predecessor satu level diatas suatu node

Child Subcessor satu level dibawah node

Sibling node-node yang memiliki parent yang sama dengan


suatu node.
Subtree bagian dari tree yang berupa suatu node beserta
descendantnya dan memiliki semua karakteristik dari tree
tersebut.
Size banyaknya node dalam suatu tree.
Height banyaknya tingkatan/level dalam suatu tree.
Root satu-satunya node khusus dalam tree yang tak punya
predecssor.
Leaf node-node dalam tree yang tak memiliki seccessor.
Degree banyaknya child yang dimiliki suatu node

Binary Tree (Pohon Biner)

Dalam mata kuliah struktur data, secara khusus akan dipelajari mengenai
pohon biner. Pohon biner adalah sebuah tree yang pada masing-masing simpulnya
hanya dapat memiliki maksimum 2 (dua) simpul anak. Tidak boleh lebih. Pada
pohon biner, umumnya kedua node anak disebut dengan posisinya, yaitu kiri
dan kanan. Pohon biner adalah bentuk graf yang terhubung yang tidak memiliki
sirkuit dan pada pohon biner selalu terdapat path atau jalur yang menghubungkan
dua simpul dalam pohon.

Beberapa istilah pada pohon biner:

• Size (ukuran): jumlah total node yang terdapat pada pohon biner tersebut.

• Depth (kedalaman): panjang jalur yang menghubungkan sebuah node sampai ke


node anaknya yang paling ujung (leaf). Depth biasa juga disebut height.
Operasi-operasi pada Binary Tree :
1. Create : Membentuk binary tree baru yang masih kosong.
2. Clear : Mengosongkan binary tree yang sudah ada.
3. Empty : Function untuk memeriksa apakah binary tree masih kosong.
4. Insert : Memasukkan sebuah node ke dalam tree. Ada tiga pilihan insert:
sebagai root, left child, atau right child. Khusus insert sebagai root, tree harus
dalam keadaan kosong.
5. Find : Mencari root, parent, left child, atau right child dari suatu node. (Tree
tak boleh kosong)
6. Update : Mengubah isi dari node yang ditunjuk oleh pointer current. (Tree
tidak boleh kosong)
7. Retrieve : Mengetahui isi dari node yang ditunjuk pointer current. (Tree tidak
boleh kosong)
8. DeleteSub : Menghapus sebuah subtree (node beserta seluruh
descendantnya) yang ditunjuk current. Tree tak boleh kosong. Setelah itu
pointer current akan berpindah ke parent dari node yang dihapus.
9. Characteristic : Mengetahui karakteristik dari suatu tree, yakni : size, height,
serta average lengthnya. Tree tidak boleh kosong. (Average Length =
[jumlahNodeLvl1*1+jmlNodeLvl2*2+…+jmlNodeLvln*n]/Size)
10.Traverse : Mengunjungi seluruh node-node pada tree, masing-masing sekali.
Hasilnya adalah urutan informasi secara linier yang tersimpan dalam tree.
Ada tiga cara traverse : Pre Order, In Order, dan Post Order.
Langkah-Langkahnya Traverse :
PreOrder : Cetak isi node yang dikunjungi, kunjungi Left Child, kunjungi Right Child.
InOrder : Kunjungi Left Child, Cetak isi node yang dikunjungi, kunjungi Right Child.
PostOrder : Kunjungi Left Child, Kunjungi Right Child, cetak isi node yang dikunjungi
Dalam bentuknya yang paling sederhana, pencarian biner digunakan untuk
dengan cepat menemukan nilai dalam urutan yang diurutkan (pertimbangkan urutan
array biasa untuk saat ini). Kami akan menyebut nilai yang dicari sebagai nilai target
untuk kejelasan. Pencarian biner mempertahankan urutan yang berdekatan dari
urutan awal di mana nilai target pasti berada. Ini disebut ruang pencarian. Ruang
pencarian awalnya seluruh urutan. Pada setiap langkah, algoritma membandingkan
nilai median di ruang pencarian dengan nilai target. Berdasarkan perbandingan dan
karena urutan diurutkan, maka dapat menghilangkan setengah dari ruang pencarian.
Dengan melakukan ini berulang kali, pada akhirnya akan dibiarkan dengan ruang
pencarian yang terdiri dari satu elemen, nilai target. Misalnya, perhatikan urutan
bilangan bulat berikut yang diurutkan dalam urutan naik dan katakanlah kami
sedang mencari nomor 40:

12 39 40 55 68 77

Pencarian biner adalah algoritma yang digunakan untuk mencari elemen


dalam array yang diurutkan. Dalam algoritma ini elemen yang ditargetkan
dibandingkan dengan elemen tengah. Jika kedua elemen sama maka posisi elemen
tengah dikembalikan dan karenanya elemen yang ditargetkan ditemukan. Jika kedua
elemen tidak sama, maka jika elemen yang ditargetkan kurang atau lebih dari
elemen tengah, kami membuang bagian bawah atau atas dan pencarian dilanjutkan
dengan menemukan elemen tengah yang baru.
Program ke 1 :
#include<iostream>

using namespace std;

int main()
{
    int search(int [],int,int);
    int n,i,a[100],e,res;
    cout<<"How Many Elements:";
    cin>>n;
    cout<<"\nEnter Elements of Array in Ascending order\n";
    
    for(i=0;i<n;++i)
    {
        cin>>a[i];
    }
    
    cout<<"\nEnter element to search:";
    cin>>e;
    
    res=search(a,n,e);
    
    if(res!=-1)
        cout<<"\nElement found at position "<<res+1;
    else
        cout<<"\nElement is not found....!!!";

    return 0;
}

int search(int a[],int n,int e)


{
    int f,l,m;
    f=0;
    l=n-1;
    
    while(f<=l)
    {
        m=(f+l)/2;
        if(e==a[m])
            return(m);
        else
            if(e>a[m])
                f=m+1;
            else
                l=m-1;
    }
    
    return -1;
}

Output :

Program ke 2:

#include <iostream>
#include<conio.h>
#include<stdlib.h>

#define MAX_SIZE 5

using namespace std;

int main() {
int arr_search[MAX_SIZE], i, element;
int f = 0, r = MAX_SIZE, mid;

cout << "Simple C++ Binary Search Example - Array\n";


cout << "\nEnter " << MAX_SIZE << " Elements for Searching : " << endl;
for (i = 0; i < MAX_SIZE; i++)
cin >> arr_search[i];
cout << "\nYour Data :";
for (i = 0; i < MAX_SIZE; i++) {
cout << "\t" << arr_search[i];
}

cout << "\nEnter Element to Search : ";


cin>>element;

while (f <= r) {
mid = (f + r) / 2;

if (arr_search[mid] == element) {
cout << "\nSearch Element : " << element << " : Found : Position : " << mid + 1 <<
".\n";
break;
} else if (arr_search[mid] < element)
f = mid + 1;
else
r = mid - 1;
}

if (f > r)
cout << "\nSearch Element : " << element << " : Not Found \n";

getch();
}
Output :

SOAL (tugas individu)


1. Gambarkan pohon pencarian biner dari data – data berikut: a. 42, 10, 50, 41,
3, 18, 39, 47, 43, 49 lalu buatlah program dengan pencarian data ke 5

2. Dari pohon biner diatas sebutkan angka-angka root dan leaf!

Anda mungkin juga menyukai