• Tidak ada hasil yang ditemukan

Algoritma and Struktur Data pdf

N/A
N/A
Protected

Academic year: 2018

Membagikan "Algoritma and Struktur Data pdf"

Copied!
4
0
0

Teks penuh

(1)

Algoritma & Struktur Data Heri Juhari *

-+

a /

c b

d *

e f

Binary Tree

 Tree merupakan salah satu bentuk struktur data tidak linear yang menggambarkan hubungan yang bersifat hierarkis (hubungan one to many) antara elemen-elemen.

 Tree bisa didefinisikan sebagai kumpulan simpul/node dengan elemen khusus yang disebut Root.

 Binary Tree (Pohon Biner) yaitu pohon yang setiap simpul/node-nya paling banyak mempunyai dua buah subpohon.

 Contoh implementasi : untuk membuat pohon silsilah keluarga, ungkapan aritmatika yang setiap operatornya dipasang sebagai simpul pencabangan dan operand-operandnya sebagai subpohon, dll.

 Binary tree dapat diimplementasikan dalam C++ dengan menggunakan double linkedlist.

Ada 3 urutan dasar yang dapat digunakan untuk mengunjungi pohon, yaitu :  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.

 Simpul yang berisi informasi yang nilainya lebih besar dari simpul atas (root) akan ditempatkan sebagai cabang kanan, jika lebih kecil dari simpul atas akan ditempatkan sebagai cabang kiri.

Ungkapan Aritmatika

Hasil :

(2)

Algoritma & Struktur Data Heri Juhari Dari hasil di atas dapat disimpulkan bahwa :

 Kunjungan secara PreOrder akan menghasilkan notasi Prefix  Kunjungan secara InOrder akan menghasilkan notasi Infix  Kunjungan secara PostOrder akan menghasilkan notasi Postfix Contoh algoritma :

#include<conio.h> #include<malloc.h> #define nil NULL struct nod

{

struct nod *left; char data;

struct nod *right; };

typedef struct nod NOD; typedef NOD POKOK; NOD *NodBaru(char item) {

NOD *n;

n=(NOD *)malloc(sizeof(NOD));

if(n != NULL) {

n->data=item; n->left=NULL; n->right=NULL; }

return n; }

void BinaPokok(POKOK **T) {

*T=NULL; }

bool PokokKosong(POKOK *T) {

return ((bool)(T==NULL)); }

void TambahNod(NOD **p, char item) {

NOD *n;

(3)

Algoritma & Struktur Data Heri Juhari

*p=n; }

void preOrder(POKOK *T) {

if(!PokokKosong(T)) {

cout<<" "<<T->data; preOrder(T->left); preOrder(T->right); }

}

void inOrder(POKOK *T) {

if(!PokokKosong(T)) {

inOrder(T->left); cout<<" "<<T->data; inOrder(T->right); }

}

void postOrder(POKOK *T) {

if(!PokokKosong(T)) {

postOrder(T->left); postOrder(T->right); cout<<" "<<T->data; }

}

//Program utama int main()

{

POKOK *kelapa; char buah;

BinaPokok(&kelapa);

TambahNod(&kelapa, buah='M');

TambahNod(&kelapa->left, buah='E');

TambahNod(&kelapa->left->right, buah='I'); TambahNod(&kelapa->right, buah='L');

TambahNod(&kelapa->right->right, buah='O');

(4)

Algoritma & Struktur Data Heri Juhari

Referensi

Dokumen terkait

 struct Node* temp = head; yaitu memanggil/mengalokasikan alamat/link tiap simpul yang baru akan disisipkan dimana alamat tersebut diinisialisasikan menjadi kepala atau head.. 

Berdasarkan dari tugas praktikum yang telah saya kerjakan saya dapat menyimpulkan bahwa graph berarah bisa digunakan untuk membuat simpul dan busur beserta bobot dan arah yang

Pemilihan kondisi dengan if jika root sama dengan null Variabel root sama dengan nilai dari variable dtSisip Pemilihan kondisi jika syarat sebelumnya tidak terpenuhi Variabel

Ketika kita membuat suatu program tanpa prosedur maka seluruh statement yang terdapat di dalam program utama akan dieksekusi secara beruntun (sequential) dari

pengecekan apakah tiap node yang dilewati dari leaf hingga kembali ke root, apakah masih balance atau tidak.. Bila seluruh node yang dilewati hingga

Dengan melakukan backtracking, kita akan menggabungkan list yang berisi elemen (8)dengan list ini, sehingga list baru yang tersortir terbentuk (7,8,9).. Strateginya

▪ Misalnya jika diurutkan secara Ascending, untuk putaran pertama, akan dicari data dengan nilai terkecil dan data ini akan ditempatkan di indeks terkecil (data[0]), pada putaran

Pointer akhir adalah pointer yang menunjuk ke simpul terakhir dan simpul yang ditunjuk oleh simpul baru adalah simpul yang akan ditambahkan ke gambar (a). 2) Berikut dari