Binaarsed puud Java näidetes: täielik juhend

Viimane uuendus: 22 märts 2025
  • Binaarsed puud on mittelineaarsed andmestruktuurid, mis võimaldavad salvestada andmeid omavahel ühendatud sõlmedes.
  • Need pakuvad tõhusust elementide otsimisel, sisestamisel ja kustutamisel.
  • Neid kasutatakse laialdaselt andmete sorteerimise ja manipuleerimise algoritmides.
  • Selle struktuuri mõistmine on teiste täiustatud andmestruktuuride tundmaõppimiseks hädavajalik.
Binaarsed puud Java näidetes

Tere tulemast meie täielikku juhendisse binaarpuude kohta Java näidetes! Selles artiklis uurime üksikasjalikult binaarpuude kontseptsioone, nende rakendamist Java programmeerimiskeeles ja anname mitmeid praktilisi näiteid, mis aitavad teil seda teemat paremini mõista. Kui olete huvitatud andmestruktuuridest ja algoritmidest, sobib see artikkel teile suurepäraselt. Alustame!

Mis on binaarsed puud?

Enne kui sukeldume Java kahendpuude näidetesse, on oluline mõista, mis binaarpuud täpselt on. Arvutiteaduses on binaarpuu mittelineaarne andmestruktuur, mis koosneb omavahel ühendatud sõlmedest. Igal sõlmel võib olla kuni kaks last: vasak laps ja parem laps. Need lapsed võivad omakorda olla muud sõlmed või nullid.

Miks kasutada binaarseid puid?

Binaarpuud kasutatakse arvutiteaduses laialdaselt oma efektiivsuse ja paindlikkuse tõttu. Mõned peamised põhjused binaarpuude kasutamiseks on:

  1. Tõhus otsingBinaarsed puud pakuvad tõhusat otsinguaega konkreetsete üksuste leidmiseks andmekogust.
  2. Tõhus sisestamine ja eemaldamineBinaarsed puud võimaldavad andmestruktuuri elementide tõhusat sisestamist ja eemaldamist.
  3. Andmete sorteerimineBinaarpuid kasutatakse ka andmete tõhusaks sortimiseks, mis võib olla kasulik paljudes rakendustes.
Tasakaalustatud kahendpuud
Seotud artikkel:
Tasakaalustatud kahendpuud

Nüüd, kui oleme põhitõed üle vaadanud, on aeg sukelduda mõnesse Javas rakendatud binaarpuude praktilistesse näidetesse.

Binaarsed puud Java näidetes

Selles jaotises uurime mõningaid konkreetseid näiteid Java programmeerimiskeeles rakendatud binaarpuudest. Need näited aitavad teil mõista, kuidas Javas binaarpuid luuakse ja nendega manipuleeritakse.

Näide 1: binaarpuu põhiline juurutamine Javas

Alustuseks näitame, kuidas lihtsate klasside ja meetodite abil rakendada Java-s põhilist binaarpuud. Siin on koodinäide:

// Importar la clase Node de Java
import java.util.*;

// Definir la clase Node
class Node {
    int key;
    Node left, right;

    public Node(int item) {
        key = item;
        left = right = null;
    }
}

// Implementar la clase BinaryTree
class BinaryTree {
    // Raíz del árbol binario
    Node root;

    // Constructor
    BinaryTree(int key) {
        root = new Node(key);
    }

    // Constructor vacío
    BinaryTree() {
        root = null;
    }

    // Método principal para ejecutar el programa
    public static void main(String[] args) {
        // Crear un nuevo árbol binario
        BinaryTree tree = new BinaryTree();

        // Asignar la raíz del árbol
        tree.root = new Node(1);

        // Crear los nodos izquierdo y derecho
        tree.root.left = new Node(2);
        tree.root.right = new Node(3);

        // Mostrar el resultado
        System.out.println("Árbol binario creado con éxito.");
    }
}

Selles näites loome kahendpuu kolme sõlmega: juur väärtusega 1, vasak sõlm väärtusega 2 ja parem sõlm väärtusega 3. Programmi käivitamisel näete konsoolis teadet “Binaarpuu loodud edukalt”.

  Andmestruktuurid ja algoritmid: täielik juhend programmeerijatele

Näide 2: Java binaarpuu läbimine järjekorras

Inorder traversal on levinud tehnika, mida kasutatakse kahendpuu sõlmede läbimiseks. Siin on näide selle kohta, kuidas Java-s järjekorras läbimist rakendada:

// Clase para recorrer los nodos del árbol en orden
class BinaryTree {
    // Raíz del árbol binario
    Node root;

    // Constructor y métodos de la clase BinaryTree

    // Método para recorrer los nodos en orden
    void inOrder(Node node) {
        if (node != null) {
            // Recorrer el subárbol izquierdo
            inOrder(node.left);

            // Mostrar el valor del nodo actual
            System.out.print(node.key + " ");

            // Recorrer el subárbol derecho
            inOrder(node.right);
        }
    }

    // Método principal para ejecutar el programa
    public static void main(String[] args) {
        // Crear un nuevo árbol binario
        BinaryTree tree = new BinaryTree();

        // Asignar la raíz del árbol
        tree.root = new Node(1);

        // Crear los nodos izquierdo y derecho
        tree.root.left = new Node(2);
        tree.root.right = new Node(3);

        // Mostrar el recorrido en orden
        System.out.print("Recorrido en orden: ");
        tree.inOrder(tree.root);
    }
}

Selles näites loome eelmise näitega sarnase binaarpuu ja kasutame seejärel meetodit inOrder() sõlmede järjekorras läbimiseks. Tulemus kuvatakse konsoolis.

Binaarsed puud C-s
Seotud artikkel:
Binaarsed puud C-s: täielik juhend algajatele

Need näited peaksid andma teile selge ettekujutuse, kuidas Javas binaarpuudega töötada. Nüüd uurime mõnda selle teemaga seotud korduma kippuvat küsimust.

Korduma kippuvad küsimused Java binaarpuude kohta

Siin on mõned korduma kippuvad küsimused Java binaarpuude kohta koos vastustega:

1. Mis on Java binaarpuude kasutamise eelis?

Binaarsed puud pakuvad tõhusat elementide otsimist, sisestamist ja kustutamist, muutes need ideaalseks paljude rakenduste jaoks, mis nõuavad kiireid toiminguid suurte andmekogumitega.

2. Mis vahe on kahendpuul ja binaarsel otsingupuul?

Peamine erinevus seisneb selles, kuidas elemendid on puudes organiseeritud. Binaarses otsingupuus on elemendid järjestatud nii, et väikseimad elemendid on vasakpoolses alampuus ja suurimad elemendid paremas alampuus. See võimaldab esemeid tõhusamalt otsida.

  Täielik juhend pöördpoola notatsiooni kohta

3. Kuidas ma saan Java binaarpuusse uue sõlme sisestada?

Java binaarpuusse uue sõlme lisamiseks toimige järgmiselt.

  1. Alustage puu juurest ja kontrollige, kas sisestatav väärtus on väiksem või suurem kui praeguse sõlme väärtus.
  2. Kui väärtus on väiksem, liikuge praeguse sõlme vasakpoolsesse alampuusse.
  3. Kui väärtus on suurem, liikuge praeguse sõlme paremale alampuule.
  4. Jätkake seda protsessi, kuni leiate vastavast alampuust tühja (null) sõlme.
  5. Looge sisestatava väärtusega uus sõlm ja määrake see tühi sõlm.
  6. Uus sõlm on edukalt sisestatud!
otsingu algoritmid
Seotud artikkel:
Otsingualgoritmid: mis need on ja kuidas need töötavad

4. Milline on kahendpuudega tehtavate toimingute ajaline keerukus?

Binaarpuude operatsioonide ajaline keerukus sõltub puu kõrgusest. Halvimal juhul, kui puu on tasakaalustamata ja meenutab lingitud loendit, võib kõrgus olla võrdne puu sõlmede arvuga. Sellisel juhul oleks sõlmede otsimise, lisamise ja kustutamise ajaline keerukus O(n). Tasakaalustatud binaarpuude , näiteks AVL-puude või puna-mustade puude puhul jääb kõrgus aga logaritmiliseks ja operatsioonide ajaline keerukus on O(log n).

5. Mis on täisbinaarpuud?

Täisbinaarpuu on kahendpuu eritüüp, mille kõik tasemed, välja arvatud võib-olla viimane, on täielikult täidetud ja viimase taseme sõlmed on võimalikult vasakul. Teisisõnu, kõik sõlmed jäetakse joondatud ja sügavaimal tasemel ei ole lünki. Täielikke binaarpuid kasutatakse andmestruktuuride, näiteks prioriteetsete järjekordade, tõhusates rakendustes.

6. Kuidas saan Java binaarpuust sõlme eemaldada?

Sõlme kustutamine binaarpuust võib olla veidi keerulisem kui selle sisestamine. Siin on üldised sammud sõlme kustutamiseks.

  1. Alustage juurest ja leidke sõlm, mille soovite eemaldada.
  2. Kui sõlmel on lapsed, otsustab ta, kuidas sõlmed binaarse puustruktuuri säilitamiseks ümber korraldada.
  3. Kui kustutatav sõlm on leht (pole lapsi), kustutage see lihtsalt, muutes selle vanemas vastavaid viiteid.
  4. Kui kustutataval sõlmel on ainult üks alam, linkige see laps kustutatava sõlme vanemaga.
  5. Kui kustutataval sõlmel on kaks järglast, leidke sõlme vahetu järglane (parempoolse alampuu väikseim sõlm) ja asendage kustutatava sõlme väärtus järglase väärtusega. Seejärel eemaldage järglane, järgides ülaltoodud samme.
  6. Sõlm on edukalt kustutatud!
Andmestruktuur programmeerimises
Seotud artikkel:
Andmestruktuurid programmeerimisel: Ultimate Guide

Pange tähele, et need sammud on üldised ja olenevalt konkreetsest rakendusest võivad kustutamisloogikas olla erinevusi.

  Mosca teoreem ja kvantarvutite saabumine

Nüüd, kui oleme uurinud mõningaid Java binaarpuude näiteid ja vastanud mõnele korduma kippuvale küsimusele, on aeg see artikkel lõpetada.

Järeldus

Kokkuvõtteks võib öelda, et binaarpuud on võimsad andmestruktuurid, mida kasutatakse arvutiteaduses andmekogude tõhusaks korraldamiseks ja töötlemiseks. Selles artiklis oleme uurinud praktilisi näiteid Javas rakendatud kahendpuudest, mis hõlmavad kõike alates põhiloomest kuni järjekorras läbimiseni. Loodame, et need näited on andnud teile kindla arusaama, kuidas Javas binaarpuudega töötada.

Pidage meeles, et harjutamine on Java binaarpuude juurutamise ja manipuleerimise oskuste parandamiseks hädavajalik. Soovitame teil katsetada erinevaid näiteid ja väljakutseid, et tugevdada selle teema mõistmist ja valdamist.

Mittebinaarsed puud
Seotud artikkel:
Mittebinaarsed puud: revolutsioon andmestruktuurides

Täname, et lugesite meie täielikku juhendit binaarpuude kohta Java näidetes! Loodame, et see on olnud abiks ja andnud teile vajalikud tööriistad, et alustada oma projektides kahendpuudega töötamist. Edu õppimise ja programmeerimise teekonnal!