Sebuah pohon biner sederhana dengan lebar 9 dan tinggi 3, dengan sebuah akar yang memiliki nilai 2
Dalam ilmu komputer, sebuah pohon biner (binary tree) adalah sebuah pohonstruktur data di
mana setiap simpul memiliki paling banyak dua anak. Secara khusus anaknya
dinamakan kiri dan kanan. Penggunaan secara umum pohon biner adalah Pohon biner terurut, yang
lainnnya adalah heap biner.
Daftar isi
[sembunyikan]
4Kombinatorik
o 6.2Depth-first order
o 6.3Breadth-first order
7Penyandian
o 7.1Penyandian ringkas
8Lihat pula
9Referensi
Akar dari pohon adalah simpul tanpa ayah. Terdapat paling banyak satu akar dalam pohon
berakar.
Kedalaman sebuah simpul n adalah panjang jalan dari akar ke simpul. Himpunan semua
simpul pada kedalaman yang diberikan kadang-kadang dinamai dengan Tingkat (Level) dari
pohon. Akar memiliki kedalaman kosong.
Jika terdapat sebuah jalan dari simpul p ke simpul q, di mana simpul p lebih dekat ke akar
daripada q, maka p adalah leluhur dari q dan q adalah keturunan p.
Lebar daris sebuah simpul adalah jumlah keturunan termasuk simpul itu sendiri.
Sebuah pohon biner penuh (full binary tree), atau pohon biner asli (proper binary tree),
adalah sebuah pohon di mana setiap simpul mempunyai nol atau dua anak.
Sebuah pohon biner sempurna (perfect binary tree) (atau kadang-kadang pohon biner
lengkap (complete binary tree) adalah sebuah pohon biner penuh di mana
semua daun memiliki kedalaman yang sama.
Sebuah pohon biner lengkap (complete binary tree) dapat didefinisikan juga sebagai
sebuah pohon biner penuh di mana semua daunnya memiliki kedalaman n atau n-1 untuk
beberapa n. Agar sebuah pohon dapat menjadi sebuah pohon biner lengkap, semua anak
pada tingkat terakhir harus menempati titik terkiri secara teratur, dengan tidak ada titik yang
menganggur di antara keduanya. Sebagai contoh, jika dua simpul pada tingkat terbawah
masing-masing menempati sebuah titik dengan suatu titik kosong di antara keduanya, tetapi
sisa simpul anaknya terhimpit tanpa titik di antaranya, maka pohon tersebut tidak dapat
membentuk sebuah pohon biner lengkap karena titik kosong tersebut.
Sebuah pohon biner lengkap berakar (rooted complete binary tree) dapat dikenali
dengan magma bebas.
Sebuah pohon biner hampir lengkap (almost complete binary tree) adalah sebuah
pohon diaman setiap simpul yang mempunyai anak kanan juga memiliki anak kiri. Memiliki anak
kiri tidak memerlukan sebuah simpul untuk mempunyai anak kanan. Penjelasan lainnya,
sebuah pohon biner hampir lengkap adalah sebuah pohon di mana untuk sebuah anak
kanan, selalu terdapat anak kiri, tetapi untuk sebuah anak kiri, tidak selalu terdapat sebuah anak
kanan.
Jumlah simpul n dalam pohon biner lengkap dapat dihitung dengan menggunakan rumus: n
= 2^(h+1)-1 di mana h adalah tinggi dari pohon.
Jumlah daun n dalam sebuah pohon biner lengkap dapat dihitung dengan menggunakan
rumus: n = 2^h di mana h adalah tinggi dari pohon.
Sebuah graf yang dibentuk dengan mengambil dua pohon biner, menambahkan sebuah
sudut, dan menambahkan sebuah panah langsung dari sudut yang baru ke akar daris setiap
pohon biner.
Ini juga tidak menentujan susunan anak, tetapi memperbaiki akar tertentu.
Kombinatorik
Kelompok dari sepasang simpul dalam sebuah pohon dapat digambarkan sebagai pasangan
dari aksara dalam tanda kurung. Oleh sebab itu, (a,b) menunjukan pohon biner di mana sub pohon
kirinya adalah a sedangkan sub pohon kanannya adalah b. Benang dari tanda kurung yang
seimbang mungkin dapat digunakan untuk menunjukan pohon biner pada umumnya. Himpunan dari
semua benang yang mungkin yang terdiri dari keseluruhan tanda kurung yang seimbang dikenal
sebagal bahasa Dyck.
Diketahui n+1 simpul, jumlah seluruh jalan di mana simpul tersebut dapat disusun kedalam sebuah
pohon biner dengan sebuah bilangan Catalan . Sebagai contoh, adalah pernyataan
bahwa (ab)c dan a(bc) merupakan dua pohon biner yang mungkin, yang memiliki 3 simpul.
Kemampuan untuk menggambarkan pohon biner sebagai benang dari simbol-simbol dan tanda
kurung secara tidak langsung menyatakan bahwa pohon biner dapat mewakili elemen dari magma.
Sebaliknya, himpunan dari semua pohon biner yang mungkin, bersama-sama dengan operasi
natural memasangkan pohon dari satu ke yang lain, dari sebuah magma, magma bebas.
Memberikan benang yang menggambarkan sebuah pohon biner, operator untuk mendapatkan sub
pohon kiri dan kanan kadang-kadang mengacu sebagai CAR dan CDR.
Dalam bahasa dengan tagged union seperti ML, sebuah simpul pohon seringkali sebuah tagged
union dari dua jenis simpul, di mana yang satu merupakan data dari 3-tupel, anak kiri, dan anak
kanan, dan yang lain di mana sebuah daun, yang tidak memuat data dan fungsi seperti nilai nol
dalam bahasa dengan penunjuk (pointers)
Penyandian
Penyandian ringkas
Sebuah struktur data ringkas adalah sesuatu yang mengambil tempat minimum mutlak yang
mungkin, yang berdiri sebagai teori informasi bawah. Jumlah dari pohon biner yang berbeda
pada simpul adalah , Bilangan Catalan ke- (asumsikan kita melihat pohon dengan struktur yang
identik sebagai sebuah kesamaan). Untuk besarnya , ini berkisar kira-kira ; sehingga kita
membutuhkan setidaknya kira-kira bit untuk menyalinnya. Oleh sebab itu sebuah pohon biner
ringkas hanya membutuhkan 2 bit setiap simpul.
Salah satu penggambaran sederhana yang masih berhubungan dengan ini adalah mengunjungi
simpul dari pohon dengan preoder, meletakkan "1" untuk sebuah simpul dalan dan "0" untuk sebuah
daun. [1] Jika pohon ini memuat data, kita dapat menyimpanya secara serempak dalam
sebuah array yang berurutan dengan preoder. Fungsi ini memenuhi:
String structure hanya memiliki bit pada bagian akhir, di mana adalah angka dari simpul dalam; kita
bahkan tidak memerlukan untuk menyimpan panjangnya. Untuk menunjukkan bahwa tidak ada
informasi yang hilang, kita dapat mengubah hasilnya kembali seperti pohon aslinya seperti ini:
Pohon biner dapat dianggap sebagai pohon asli yang membujur kesamping, dengan tepi kirinya
yang berwarna hitam menggambarkan anak pertama dan tepi kanannya yang berwarna biru
menggambarkan saudara selanjutnya. Daun dari bagian kiri pohon ini dapat dituliskan dalam Lips
sebagai:
(((M N) H I) C D ((O) (P)) F (L))
yang akan diimplementasikan ke memori sebagai pohon biner kanan, tanpa huruf apapun pada
simpul itu yang telah memiliki anak.
Lihat pula
Pohon (struktur data)
Referensi
Donald Knuth. The art of computer programming vol 1. Fundamental Algorithms, Edisi
Ketiga. Addison-Wesley, 1997. ISBN 0-201-89683-4. Section 2.3, khususnya subsections
2.3.12.3.2 (hal.318348).
Tree bisa didefinisikan sebagai kumpulan simpul/node dengan elemen khusus yang
disebut Root.
Contoh :
B. Operasi Dasar
Insert: menambah node ke dalam Tree secara rekursif. Jika data yang akan
dimasukkan lebih besar daripada elemen root, maka akan diletakkan di node
sebelah kanan, sebaliknya jika lebih kecil maka akan diletakkan di node sebelah
kiri. Untuk data pertama akan menjadi elemen root.
Find: mencari node di dalam Tree secara rekursif sampai node tersebut ditemukan
dengan menggunakan variable bantuan ketemu. Syaratnya adalah tree tidak boleh
kosong.
Find Min dan Find Max : mencari nilai terkecil dan terbesar pada Tree
Suatu tree dengan syarat bahwa tiap node hanya boleh memiliki maksimal dua
subtree dan kedua subtree tersebut harus terpisah.
Tiap node dalam binary tree hanya boleh memiliki paling banyak dua child.
Contoh BST :
D. Tree Traversal
Teknik menyusuri tiap node dalam sebuah tree secara sistematis, sehingga
semua node dapat dan hanya satu kali saja dikunjungi
- Preorder
- Inorder
- postorder
1. Preorder (SLR)
Contoh :
struct node {
struct node *left;
char label;
2. Inorder (LSR)
contoh :
Implementasi dalam bahasa C
struct node {
char label;
3. Postorder (LRS)
Subtree sebelah kiri (Left)
contoh :
struct node {
char label;