Professional Documents
Culture Documents
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 pohon struktur data
dimana 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]
• 9 Referensi
Dengan akar yang dipilih, setiap sudut akan memiliki ayah khusus, dan diatas dua anak;
bagaimanapun juga, sejauh ini terdapat keterbatasan informasi untuk membedakan antara anak
kiri atau kanan. Jika kita membuang keperluan yg tak terkoneksi, membolehkan bermacam
koneksi dalam komponen di gafik, kita memanggil struktur sebuah hutan.
Sebuah jalan lain untuk mendefinisikan pohon biner melalui definisi rekursif pada grafik
langsung. Sebuah pohon biner dapat berarti:
Ini juga tidak menentujan susunan anak, tetapi memperbaiki akar tertentu.
[sunting] 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 dimana 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 dimana simpul tersebut dapat disusun kedalam
sebuah pohon biner dengan sebuah bilangan Catalan Cn. Sebagai contoh, C2 = 2 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.
Pohon biner dapat juga disimpan sebagai struktur data implisit dalam array, dan jika pohon
tersebut merupakan sebuah pohon biner lengkap, metode ini tidak boros tempat. Dalam
penyusunan yang rapat ini, jika sebuah simpul memiliki indeks i, anaknya dapat ditemukan pada
indeks ke-2i+1 dan 2i+2, meskipun ayahnya (jika ada) ditemukan pada indeks lantai((i-1)/2)
(asumsikan akarnya memiliki indeks kosong). Metode ini menguntungkan dari banyak
penyimpanan yang rapat dan memiliki referensi lokal yang lebih baik, tersitimewa selama
sebuah preorder traversal. Bagaimanapun juga, ini terlalu mahal untuk perkembangannya dan
boros tempat sebanding dengan 2h - n untuk sebuah pohon dengan tinggi h dengan nsimpul.
Dalam bahasa dengan tagged union seperti ML, sebuah simpul pohon seringkali sebuah tagged
union dari dua jenis simpul, dimana yang satu merupakan data dari 3-tupel, anak kiri, dan anak
kanan, dan yang lain dimana sebuah daun, yang tidak memuat data dan fungsi seperti nilai nol
dalam bahasa dengan penunjuk (pointers)
Pre-order, in-order, dan post-order traversal mengunjungi setiap simpul dalam sebuah pohon
dengan pengunjungan secara berulang-ulang pada sub pohon kiri dan kanan dari akarnya. Jika
akarnya dikunjungi sebelum sub pohonnya, ini merupakan preoder. Jika akarnya dikunjungi
sesudah sub pohonnya, ini dinamakan postorder dan jika akarnya dikunjungi diantara sub
pohonnya, dinamakan inorder. In-order traversal sangat berguna dalam pohon biner terurut,
dimana traversal ini mengunjungi simpul dalam urutan yang meningkat.
Dibandingkan dengan depth-first order, breadth-first order, yang selalu berusaha untuk
mengnjungi simpul terdekat dengan akar yang belum dikunjunginya.
[sunting] Penyandian
[sunting] 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 n simpul adalah Cn, Bilangan Catalan ke-n (asumsikan kita melihat pohon dengan struktur
yang identik sebagai sebuah kesamaan). Untuk besarnya n, ini berkisar kira-kira 4n; sehingga kita
membutuhkan setidaknya kira-kira log24n = 2n 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 2n + 1 bit pada bagian akhir, dimana n 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:
Penggambaran secara ringkas dan rumit memungkinkan tidak hanya penyimpanan yang rapi
pada pohon tetapi bahkan operasi yang berguna secara langsung pada pohon tersebut, meskipun
mereka masih dalam bentuk yang ringkas.
Terdapat sebuah pemetaan satu-satu antara pohon terurut general dan pohon biner, yang biasanya
digunakan oleh Lisp untuk menggambarkan pohon terurut general sebagai pohon biner. Setiap
simpul N dalam pohon terurut terhubung ke sebuah simpul N dalam pohon biner; anak kiri dari
N merupakan simpul yang terhubung ke anak pertama dari N, dan anak kanan dari N merupakan
simpul yang terhubung ke saudara selanjutnya dari N yang merupakan simpul selanjutnya dalam
urutan diantara anak-anaknya dari ayahnya N
Suatu cara untuk menyelesaikan ini adalah bahwa setiap anak simpul berada dalam sebuah
linked list, dihubungkan bersama dengan bidang kanan mereka, dan simpul yang hanya memiliki
sebuah petunjuk ke awalnya atau kepala dari daftar ini, melalui bidang kiri nya.
Sebagai contoh, dalam sebuah pohon bagian kirinya, A memiliki 6 anak {B,C,D,E,F,G}. Ini
dapat diubah manjadi sebuah pohon biner bagian kanan.
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:
[sunting] 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.1–2.3.2 (hal.318–348).