Laman

Jumat, 27 November 2015

Membuat Binary Tree pada C++

Sekarang Ane akan membuat tutorial termudah cara membuat binary tree pada C++

PERHATIAN BACA TEKS WARNA MERAH INI SEBELUM MELANJUTKAN MEMBACA!

Skill yang dibutuhkan 
1 Dasar pemrograman C++
2 Basic Rekursif
3 Dasar Algoritma  
4 Pointer pada C++

Teori tentang Binary Tree

Berkas:AVLtreef.svg

gambar ilustrasi pohon Binary

Dalam ilmu komputer, sebuah Pohon adalah suatu struktur data yang digunakan secara luas yang menyerupai struktur pohon dengan sejumlah simpul yang terhubung.

Simpul(Node)

Sebuah Simpul dapat mengandung sebuah nilai atau suatu kondisi atau menggambarkan sebuah struktur data terpisah atau sebuah bagian pohon itu sendiri. Setiap simpul dalam sebuah pohon memiliki nol atau lebih simpul anak (child nodes), yang berada dibawahnya dalam pohon (menurut perjanjian, pohon berkembang ke bawah, tidak seperti yang dilakukannya di alam). Sebuah simpul yang memiliki anak dinamakan simpul ayah (parent node) atau simpul leluhur (ancestor node) atau superior. Sebuah simpul paling banyak memiliki satu ayah. Tinggi dari pohon adalah panjang maksimal jalan ke sebuah daun dari simpul tersebut. Tinggi dari akar adalah tinggi dari pohon. Kedalaman dari sebuah simpul adalah panjang jalan ke akarnya dari simpul tersebut.



Daun(Leaf Node)
Semua simpul yang berada pada tingkat terendah dari pohon dinamakan daun (leaf node). Sejak mereka terletak pada tingkat paling bawah, mereka tidak memiliki anak satupun. Seringkali, daun merupakan simpul terjauh dari akar. Dalam teori grafik, sebuah daun adalah sebuah sudut dengan tingkat 1 selain akar (kecuali jika pohonnya hanya memiliki satu sudut; maka akarnya adalah daunnya juga). Setiap pohon memiliki setidaknya satu daun.
Dalam pohon berdasarkan genetic programming sebuah daun (juga dibilang terminal) adalah bagian terluar dari sebuah program pohon. Jika dibandingkan dengan fungsinya atau simpul dalam, daun tidak memiliki argumen. Di banyak kasus dalam daun-GP input ke programnya.
Berikut adalah cara membuatnya  :
1 buat sebuah struktur data dan buat variabel untuk akar, dan arahnya






2 buat fungsi untuk membuat node baru, disini ane menggunakan pointer gan karena ini berhubungan dengan memori





3 buat sebuah prosedur untuk membuat sebuah binary tree. Pada bagian ini ane akan memecahnya menjadi beberapa bagian supaya menjadi jelas karena disini adalah bagian yang cukup sulit untuk di pahami karena ini menggunakan metode prosedur rekursif











3.1 kita mulai dari yang ini gan



penjelasanya adalah seperti ini gan
pertama akan mengecek apakah node nya itu ada isinya. disitu ane memakai parent sebagai pengganti node jadi anggap saja parent itu sama dengan node
jika node nya kosong maka pada if yang selanjutnya akan mengecek apakah akar nya masih kosong jika benar maka akan di isi dengan data baru. di sini artinya setiap data yang pertama kali dimasukkan akan menjadi akar nya
3.2 lanjutannya gan






penjelasannya begini gan
jika node nya ada isi nya maka kita akan membandingkan angka dari data yang di masukan dengan angka yang ada pada node nya, jika angkanya kurang dari angka nodenya maka kanan ane isi false yang artinya data baru yang akan kita buat akan ditujukan kearah kiri kemudian b=parent ini artinya ane menggunakan variabel b sebagai penampung sementara untuk node nya lalu isi(parent->kiri,bil) artinya ane memanggil kembali prosedur isi lalu mengisi parameter pertama dengan parent->kiri yang berarti node nya ane pindah ke posisi kiri dari node yang sebelumnya, jadi dari gambar ilustrasi pohon binary di atas posisi node setelah memanggil parent->kiri berada di sisi kiri node 50, untuk yang kode dibawahnya adalah kebalikan dari penjelasan ane ini, langkah 3.2 ini akan terus berulang sampai node nya ketemu kosong
3.3 lanjutan dari 3.2 gan






penjelasanya begini gan
jika sudah di temukan node yang kosong maka kita akan membuat daun(leaf), baris berikutnya menentukan daun ini akan di taruh ke kiri atau ke kanan
4 menampilkan secara in order(urut dari terkecil sampai terbesar)






5 pada void main()








selesai gan, jika ada yang kurang jelas silahkan koment dibawah gan

Tidak ada komentar:

Posting Komentar