230 likes | 421 Views
TREE. Oleh : Neny silvia Nurhidayah Afny wilujeng Setyorini Ika Khoi run N. Indah Nur alifia. TREE. merupakan salah satu bentuk struktur data tidak linear yang menggambarkan hubungan yang bersifat hierarkis ( hubungan one to many) antara elemen-elemen .
E N D
TREE • Oleh : • NenysilviaNurhidayah • AfnywilujengSetyorini • IkaKhoirun N. • Indah Nuralifia
TREE • merupakansalahsatubentukstruktur data tidak linear yang menggambarkanhubungan yang bersifathierarkis (hubunganone to many) antaraelemen-elemen. • Tree secarabentukmenyerupaisebuahpohon, yang terdiridariserangkaian • Node (simpul) yangsalingberhubungan. • Sesuaikonvensiilmukomputer, tree bertumbuhkebawah, tidaksepertipohon di dunianyata yang tumbuhkeatas
Structur Tree • Root adalah node yang memilikihirarkitertinggi. Semuanode dapatditelusuridariroot. • R ,S dan T adalah Internal Node • Level darisebuah node adalahukuranjarak node tersebutterhadapakar • X merupakan node induk(parent) dari Y dan Z • Y dan Z merupakan node anak (Child) dari X • Node yang dibawah Root adalahSubtree(cabang). • leaf (daun) adalahSebuah node yang tidakmemilikianak.
ISTILAH DALAM TREE • Prodecessor: node yang beradadiatasnodetertentu. • Successor : node yang berada di bawahnodetertentu. • Ancestor : seluruhnode yang terletaksebelumnodetertentu dan terletak pada jalur yang sama. • Descendant : seluruhnode yang terletaksesudahnodetertentu dan terletak pada jalur yang sama. • Parent: predecssorsatulevel di atas suatunode. • Child : successorsatulevel di bawahsuatunode. • Sibling : node-node yang memilikiparent yang sama dengansuatunode. • Subtree : bagiandaritree yang berupasuatunodebesertadescendantnya dan memilikisemuakarakteristikdaritreetersebut. • Size: banyaknyanodedalamsuatutree. • Height: banyaknyatingkatan/leveldalamsuatutree. • Root: satu-satunyanodekhususdalamtree yang takpunyapredecssor. • Leaf: node-nodedalamtree yang takmemilikiseccessor. • Degree : banyaknyachild yang dimilikisuatunode.
Binary Tree Suatutree dimanatiap node hanyabolehmemilikimaksimalduasubtreedankeduasubtreetersebutharusterpisah. Padapohonbiner, umumnyakedua node anakdisebutdenganposisinya, yaituKiridankanan . Deklarasi Tree struct node { int data; //menyimpannilainode structnode *left; structnode *right;}; // kiridankananbertipe left right label a a b c b c
Jenis binary tree: • Full Binary Tree • Complete Binary Tree • Incomplete Binary Tree (Unbalanced Tree) • Skewed Binary Tree
Full Binary Tree Semua node (kecuali leaf) memilikinolatau2 anakdantiapsubtreememilikipanjangpath yang sama.
Complete Binary Tree • miripdengan full binary tree,tapitiapsubtreebolehmemilikipanjang path yang berbedadantiap node (kecuali leaf) memiliki 2 anak • Seluruhnode pada level N-1 terisiseluruhnyadanpada level N node yangkosongadalah node kanan
Full Binary Tree Binary tree yang semuanodenya (kecuali leaf) hanyamemilikisatuanak.
Operasi-operasipada Tree Create:membentuksebuah tree baru yang kosong. Clear:menghapussemuaelemen tree. Empty:mengetahuiapakah tree kosongatautidak. Insert: menambah node ke dalam Tree secara rekursif. Find:mencari node di dalam Tree secararekursifsampainode tersebutditemukandenganmenggunakanvariable bantuanketemu. Syaratnyaadalah tree tidakbolehkosong. Traverse: yaituoperasikunjunganterhadapnode-node dalampohondimanamasing-masingnode akandikunjungisekali. Count: menghitungjumlah node dalam Tree Height : mengetahuikedalamansebuah Tree Find Min dan Find Max : mencarinilaiterkecildanterbesarpadaTree Child : mengetahuianakdarisebuah node (jikapunya)
Menambahkan Node Pada Tree • 1. Jikapohonkosong, maka node baruditempatkansebagaiakarpohon • 2. Jikapohontidakkosong, makadimulaidari node akar, dilakukan proses pengecekanberikut: • a. Jikanilai node barulebihkecildarinilai node yang sedangdicek, makalihatkekirinode tersebut. • Jikakiri node tersebutkosong (belummemilikikiri), maka node barumenjadikiri node yang sedangdicek. • Seandainyakiri node sudahterisi, lakukankembalipengecekan a dan b terhadap node kiritersebut. • Pengecekaninidilakukanseterusnyahingga node barudapatditempatkan. 5 Menambahkan node baru nilai 5 : 10 6 8 5 3
b. Jikanilai node barulebihbesardarinilai node yang sedangdicek, makalihatkekanannodetersebut. • Jikakanan node tersebutkosong (belummemilikikanan), maka node barumenjadikanan node yang sedangdicek. • Seandainyakanan node sudahterisi, lakukankembalipengecekana dan b terhadap node kanantersebut. Pengecekaninidilakukanseterusnyahingga node barudapatditempatkan 11 Menambahkan node baru nilai 11 : 10 6 8 3 5 11
Proses penambahaninidiimplementasikansecararekursifpadafungsiberikut: Variabel **root menunjukkan node mana yang sedangdiceksaatini, untukitusaatpemanggilanfungsiini, variabel **root kitaberinilai pointer yang menunjukke node akar, yaitupohon
MembacadanMenampilkanNodePada Tree Untukmembacadanmenampilkanseluruh node yang terdapatpadapohonbiner, terdapat 3 macamcara, atau yang biasadisebutkunjungan (visit). • KunjunganPre-Order • KunjunganIn-Order • Kunjungan Post-Order
1.KunjunganPre-Order • Kunjunganpre-order dilakukanmulaidariakarpohon, denganurutan: • Cetakisi(data) node yang sedangdikunjungi • Kunjungikiri node tersebut • Jikakiribukankosong (tidakNULL) mulailagidarilangkahpertama, terapkanuntukkiritersebut. • Jikakirikosong(NULL), lanjutkelangkahketiga. • 3. Kunjungikanan node tersebut, • Jikakananbukankosong (tidakNULL) mulailagidarilangkahpertama, terapkanuntukkanantersebut. • Jikakanankosong(NULL), proses untuk node iniselesai, tuntaskan proses yang samauntuk node yang dikunjungisebelumnya.
2.KunjunganIn-Order • 1.Kunjungi kiri node tersebut, • Jikakiribukankosong (tidakNULL) mulailagidarilangkahpertama, terapkanuntukkiritersebut. • Jikakirikosong(NULL), lanjutkelangkahkedua. • 2. Cetakisi(data) node yang sedangdikunjungi • 3. Kunjungikanan node tersebut, • Jikakananbukankosong (tidakNULL)mulailagidarilangkahpertama, terapkanuntukkanantersebut. • Jikakanankosong(NULL), proses untuk node iniselesai, tuntaskan proses yang samauntuk node yang dikunjungisebelumnya.
3.Kunjungan Post-Order 1. Kunjungikiri node tersebut, •Jikakiribukankosong (tidakNULL) mulailagidarilangkahpertama, terapkanuntukkiritersebut. •Jikakirikosong( NULL), lanjutkelangkahkedua. 2. Kunjungikanan node tersebut, •Jikakananbukankosong (tidakNULL) mulailagidarilangkahpertama, terapkanuntukkanantersebut. •Jikakanankosong(NULL), lanjutkelangkahketiga. 3. Cetakisi(data) node yang sedangdikunjungi. Proses untuk node iniselesai, tuntaskanproses yang samauntuk node yang dikunjungisebelumnya GDBHIEFCA
Searching in Tree Pencariandilakukansecararekursif, dimulaidari node root, jika data yang dicarilebihkecildaripada data node root, makapencariandilakukan di sub node sebelahkiri, sedangkanjika data yang dicarilebihbesardaripada data node root, makapencariandilakukan di sub node sebelahkanan, jika data yang dicarisamadengan data suatu node berartikembalikan node tersebutdanberarti data ditemukan.
Keterangan Searching Root = 6 dan 8 > 6, makaakandicari di sub node bagiankanan root. Root = 10 dan 8 < 10, makaakandicari di sub node bagiankiri root. Root = 7 dan 8 > 7, makaakandicari di sub node bagiankanan root. Root = 8, berarti 8 = 8, maka akan dikembalikan node tersebut dan dianggap ketemu!
Jumlah Node Tree Penghitunganjumlah node dalam tree dilakukandengancaramengunjungisetiap node, dimulaidari root kesubtreekiri, kemudiankesubtreekanandanmasing-masing node dicatatjumlahnya, danterakhirjumlah node yang ada di subtreekiridijumlahkandenganjumlah node yang ada di subtreekananditambah 1 yaitu node root.
Kedalaman (height) Node Tree Penghitungankedalamandihitungdarisetelah root, yang dimulaidarisubtreebagiankirikemudiankesubtreebagiankanan. Untukmasing-masingkedalamankiridankananakandibandingkan, jikaternyatasubtreekirilebihdalam, maka yang dipakaiadalahjumlahkedalamansubtreekiri, demikiansebaliknya. Hal inididasarkanpadaprinsip binary tree, dimana tree-nyaselalumemilikimaksimal 2 node anak.