Anda di halaman 1dari 5

Struktur Data

Di Kerjakan Oleh:
Armando ( 1914000010)
Soal
1. Jelaskan konsep pohon dengan contoh.
2. Diskusikan terminologi yang berhubungan dengan Tree.
3. Apakah Binery Tree itu? Diskusikan struktur Binery Tree dengan contoh.
4. Diskusikan proses pembuatan pohon biner dengan contoh.
5. Menggambarkan representasi pohon biner menggunakan array.

Jawaban
1. Tree adalah struktur data yang memungkinkan Anda mengaitkan hubungan induk-anak antara berbagai
potongan-potongan data dan dengan demikian memungkinkan kita untuk mengatur catatan, data dan file kita secara
hirarkis.
Asumsikan Tree mewakili struktur keluarga Anda. Katakanlah kita mulai dengan Grand parent Anda; kemudian
datanglah ke orang tuamu dan terakhir, kamu dan saudara-saudaramu.

2.
(*) Node adalah struktur yang mungkin berisi nilai, kondisi, atau mewakili data terpisah
struktur (yang bisa menjadi pohonnya sendiri). Setiap node di pohon memiliki nol atau lebih anak
node, yang berada di bawahnya dalam pohon (menurut kesepakatan, pohon tumbuh ke bawah, bukan ke atas seperti
yang mereka lakukan di alam). Sebuah node yang memiliki anak disebut node induk anak (atau node leluhur, atau
unggul). Sebuah node memiliki paling banyak satu orang tua.
(*) Simpul yang tidak memiliki anak disebut simpul daun. Mereka juga disebut sebagai
node terminal.
(*) Ketinggian node adalah panjang jalur turun terpanjang ke daun dari node tersebut.
Tinggi akar adalah tinggi pohon. Kedalaman node adalah panjang jalur
ke akarnya (yaitu jalur akarnya). Ini biasanya dibutuhkan dalam manipulasi berbagai
pohon self balancing, Pohon AVL pada khususnya. Secara konvensional, nilai -1 sesuai dengan
sebuah subpohon tanpa node, sedangkan nol berarti subpohon dengan satu node.
(*) Simpul paling atas dalam sebuah pohon disebut simpul akar. Menjadi simpul paling atas, simpul akar
tidak akan memiliki orang tua. Ini adalah simpul di mana operasi pada pohon biasanya dimulai
(meskipun beberapa algoritme dimulai dengan simpul daun dan berakhir di akar). Semua
node lain dapat dicapai darinya dengan mengikuti edge atau link. (Dalam definisi formal,
setiap jalur tersebut juga unik). Dalam diagram, biasanya digambar di bagian atas.

(*) Sebuah simpul internal atau simpul dalam adalah sembarang simpul dari Tree yang memiliki simpul anak
dan dengan demikian bukan sebuah
simpul daun.
(*) Sebuah subtree dari Tree T adalah pohon yang terdiri dari simpul di T dan semua keturunannya di T. (Ini
berbeda dari definisi formal subpohon yang digunakan dalam teori grafik.) sesuai dengan simpul akar adalah
seluruh pohon; subpohon yang sesuai dengan yang lain simpul disebut subtree yang tepat (dalam analogi dengan
istilah subset yang tepat).

3. Setiap Tree (Pohon) yang simpulnya dapat memiliki paling banyak dua anak disebut pohon Biner atau pohon
dengan order 2. Setiap node dalam pohon Biner memiliki struktur seperti ini:

Struct NODE
{
struct NODE *leftchild;
Int nodevalue; /*this can be of any type*/
struct NODE *rightchild;
}

*Binery Tree muncul seperti yang ditunjukkan pada gambar di bawah ini.

NODE

left value right


child child

4. Pembuatan pohon biner mengikuti prinsip yang sangat sederhana - untuk elemen baru yang akan ditambahkan,
bandingkan dengan elemen saat ini di pohon. Jika nilainya kurang dari elemen Tree kemudian pindah ke sisi kiri
elemen itu atau ke kanannya. Jika tidak ada sub pohon di kiri, jadikan elemen baru Anda sebagai anak kiri dari
elemen saat ini atau bandingkan dengannya anak kiri yang ada dan mengikuti aturan yang sama. Hal yang sama
harus dilakukan untuk kasus ketika anda elemen baru lebih besar dari elemen saat ini di pohon tetapi kali ini dengan
anak yang tepat.
Algoritma diberikan seperti di bawah ini:
(*) Langkah-1: Jika Nilai elemen baru <elemen saat ini, lanjutkan ke langkah-2 atau langkah-3.
(*) Langkah-2: Jika elemen saat ini tidak memiliki sub-pohon kiri, buatlah elemen baru Anda
anak kiri dari elemen saat ini; jika tidak, jadikan anak kiri yang ada sebagai milik Anda saat ini
elemen dan lanjutkan ke langkah-1.
(*) Langkah-3: Jika elemen saat ini tidak memiliki sub-pohon yang tepat, buatlah elemen baru Anda
anak kanan dari elemen saat ini; lain jadikanlah anak yang ada saat ini sebagai milik Anda saat ini
elemen dan lanjutkan ke langkah-1.
* implementasi diberikan seperti di bawah ini.

struct NODE
{
struct NODE *left;
int value;
struct NODE *right;
}
create_tree(struct NODE *curr, struct NODE *new)
{
if(new->value <= curr->value)
{
if(curr->left != NULL)
create_tree(curr->left, new);
else
curr->left = new;
}
else
{
if(curr->right != NULL)
create_tree(curr->right, new);
else
curr->right = new;
}
}

5. Program berikut menunjukkan bagaimana Binery Tree dapat direpresentasikan menggunakan array:

#include<stdio.h>
#include<conio.h>
#include<alloc.h>
struct node
{
struct node *left;
char data;
struct node *right;
};
struct node *buildtree(int);
void inorder(struct node);
char arr[]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’,\0’,‘\0’,‘\h’};
int ic[]={1,3,5,-1,9,-1,-1,-1-,-1,-1};
int rc[]={2,4,6,-1,-1,-1-,-1,-1,-1,-1};
void main()
{
struct node *root;
clrscr();
root=buildtree(0);
printf(“in-order traversal:\n”);
inorder(root);
getch();
}
struct node *buildtree(it index)
{

Anda mungkin juga menyukai