Apakah Pokok Binari Berulir?

王林
Lepaskan: 2024-08-30 18:37:54
asal
535 orang telah melayarinya

What is a Threaded Binary Tree?

 

Dalam sains komputer, pepohon binari ialah struktur data asas yang menyusun data dalam cara hierarki, membolehkan capaian dan manipulasi data yang cekap. Antara pelbagai jenis pokok binari, Pokok Binari Berulir menonjol kerana reka bentuknya yang unik, yang meningkatkan kecekapan traversal pokok tanpa meningkatkan penggunaan memori. Artikel ini meneroka apakah pokok binari berulir, kelebihannya dan cara ia berbeza daripada pokok binari konvensional.

Asas Pokok Binari

Sebuah pokok binari ialah struktur data di mana setiap nod mempunyai paling banyak dua anak, biasanya dirujuk sebagai anak kiri dan kanan. Operasi seperti sisipan, pemadaman dan traversal adalah tugas standard yang dilakukan pada pokok binari. Kaedah traversal yang paling biasa ialah tertib, prapesanan dan pesanan.

Inorder Traversal

Dalam inorder traversal, prosesnya melibatkan:

  1. Melintasi subpokok kiri.
  2. Melawat nod akar.
  3. Melintasi subpokok yang betul.

Dalam pokok perduaan tradisional, traversal tertib biasanya memerlukan sama ada rekursi atau timbunan luaran untuk mengundur selepas melawat subpokok kiri. Kaedah ini, walaupun berkesan, menggunakan memori tambahan, terutamanya untuk pokok besar.

Di sinilah konsep pokok binari berulir mula bermain, menawarkan pendekatan yang lebih cekap ingatan untuk melintasi pokok.

Apakah Pokok Binari Berulir?

Sebuah Pokok Binari Berulir (TBT) ialah variasi pepohon binari yang direka untuk membuat traversan tertib lebih pantas dan lebih cekap ingatan. Dalam pokok binari standard, banyak nod mempunyai penunjuk NULL, terutamanya pada nod daun (nod tanpa anak). Pokok binari berulir menggunakan semula penunjuk NULL ini dengan menggantikannya dengan penunjuk kepada pendahulu tersusun atau pengganti tersusun, dikenali sebagai "benang."

Objektif utama pokok binari berulir adalah untuk menghapuskan keperluan untuk timbunan atau rekursi semasa traversal tersusun, dengan itu menjimatkan memori dan mengurangkan masa traversal.

Jenis Pokok Binari Berulir

Terdapat dua jenis utama pokok binari berulir:

  1. Pokok Perduaan Berulir Tunggal:

    • Dalam jenis ini, sama ada penunjuk NULL kiri atau kanan digantikan dengan benang.
    • Jika penunjuk kiri adalah NULL, ia digantikan dengan penuding kepada pendahulu tertib nod.
    • Jika penuding kanan ialah NULL, ia digantikan dengan penuding kepada pengganti tertib nod.
  2. Pokok Perduaan Berulir Berganda:

    • Dalam pokok berbenang dua, kedua-dua penunjuk NULL kiri dan kanan digantikan dengan benang.
    • Ini bermakna setiap nod mempunyai benang untuk kedua-dua pendahulu tertibnya (penunjuk kiri) dan pengganti terurutnya (penunjuk kanan).

Contoh

Pertimbangkan pokok binari berikut:

markdownCopy code       10<br>
      /  \<br>
     5    15<br>
    / \   / \<br>
   3   7 12  20<br>
Salin selepas log masuk

Dalam pepohon binari berulir, penunjuk kiri NULL nod 3 boleh menghala ke pendahulu tertibnya (nod 5), dan penunjuk kanan NULL nod 7 boleh menghala ke pengganti tertibnya (nod 10). Benang ini membolehkan pokok dilalui dengan tertib tanpa memerlukan timbunan atau ulangan.

Kelebihan Pokok Binari Berulir

  1. Traversal Cekap: Faedah paling ketara bagi pokok binari berulir ialah kecekapan traversal. Traversal tertib menjadi lebih pantas dan mudah, kerana benang membenarkan pergerakan terus dari satu nod ke pengganti atau pendahulunya tanpa memerlukan timbunan atau rekursi.

  2. Penggunaan Memori yang Dikurangkan: Dengan menggunakan penunjuk NULL sedia ada untuk threading, pepohon menghapuskan keperluan untuk struktur data tambahan semasa traversal, dengan itu mengurangkan overhed memori.

  3. Algoritma Ringkas: Algoritma yang memerlukan traversal menjadi lebih mudah untuk dilaksanakan dengan pepohon berulir, kerana ia tidak perlu mengambil kira pengurusan penjejakan ke belakang atau tindanan.

  4. Ruang Tambahan Minimum: Memandangkan threading hanya menggunakan semula penunjuk NULL sedia ada, ia tidak memerlukan ruang tambahan yang ketara, menjadikannya pilihan yang cekap untuk pokok besar.

Penghadan

  1. Kerumitan dalam Sisipan dan Pemadaman: Semasa traversal dioptimumkan, operasi sisipan dan pemadaman menjadi lebih kompleks dalam pepohon binari berulir. Mengemas kini urutan dengan betul semasa operasi ini memerlukan penjagaan tambahan.

  2. Kerumitan Pembinaan Permulaan: Membina pokok binari berulir adalah lebih kompleks daripada membina pokok binari standard, kerana benang mesti dilaksanakan dengan betul semasa penciptaan pokok.

  3. Khusus Kes Penggunaan: Faedah pokok binari berulir paling ketara dalam senario di mana traversal tersusun adalah kerap. Dalam kes lain, kerumitan mengurus urutan mungkin melebihi manfaatnya.

Aplikasi Praktikal

Pokok binari berulir amat berguna dalam persekitaran di mana ruang terhad atau di mana lintasan cepat dan bukan rekursif diperlukan. Ia sering digunakan dalam:

  • Pengindeksan pangkalan data: Di mana akses data yang cekap dan penggunaan memori yang minimum adalah penting.
  • Reka bentuk pengkompil: Untuk pepohon sintaks yang memerlukan traversal tertib yang kerap.
  • Jadual simbol: Dalam penterjemah dan penyusun, di mana kelajuan mendapatkan data adalah penting.

Kesimpulan

Pokok binari berulir ialah struktur data khusus yang mengoptimumkan traversal pepohon dengan menukar penunjuk NULL kepada utas yang menunjuk kepada pendahulu dan pengganti tersusun. Reka bentuk ini menjadikan traversal tersusun lebih pantas dan lebih cekap memori, terutamanya dalam aplikasi di mana traversal kerap berlaku. Walaupun lebih kompleks untuk dilaksanakan dan diselenggara, kelebihan pokok binari berulir menjadikannya alat yang tidak ternilai dalam konteks pengiraan tertentu.

Atas ialah kandungan terperinci Apakah Pokok Binari Berulir?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!