searchable.recursivesearchtree

## Class RecursiveSearchTree

- java.lang.Object
- - searchable.recursivesearchtree.RecursiveSearchTree

- All Implemented Interfaces:
    Searchable
  Direct Known Subclasses:
    RecursiveAVLTree, RecursiveBalancedTree

      class RecursiveSearchTree
      extends java.lang.Object
      implements Searchable

  Implementace vyhledávacího stromu rekurzivně.

  Užití: Ve svém programu deklarujte proměnné typu RecursiveSearchTree.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private int` | `count` počet prvků ve stromě
    `private int` | `removeCtr` Provozní měření.
    `private TreeNode` | `root` kořen stromu
    `private int` | `selectCtr` Provozní měření.
    `private int` | `updateCtr` Provozní měření.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RecursiveSearchTree()` Vyrobí instanci rekurzivního vyhledávacího stromu.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected TreeNode` | `createNode(SearchableElement elem)` Vyrobí uzel správného typu podle redefinice v potomkovi.
    `protected void` | `finalize()` Zruší instanci třídy RecursiveSearchTree.
    `int` | `getCount()` Zjistí počet prvků ve stromě.
    `int` | `getOperationCounter()` Provozní měření.
    `void` | `getReadable(java.util.List<java.lang.String> aStrings)` Naplní kolekci řetězců čitelným obsahem stromu.
    `protected int` | `getRemoveCtr()`
    `protected TreeNode` | `getRoot()`
    `protected int` | `getSelectCtr()`
    `int` | `getSortCounter()` Provozní měření.
    `protected int` | `getUpdateCtr()`
    `void` | `insert(SearchableElement elem)` Vloží prvek do stromu.
    `boolean` | `isEmpty()` Zjistí, zda je strom prázdný.
    `boolean` | `isFull()` Zjistí, zda je strom plný.
    `SearchableElement` | `remove(SearchableElement key)` Najde a odstraní prvek ze stromu.
    `SearchableElement` | `select(SearchableElement key)` Najde prvek ve stromě.
    `protected void` | `setCount(int count)`
    `protected void` | `setRemoveCtr(int removeCtr)`
    `protected void` | `setRoot(TreeNode root)`
    `protected void` | `setSelectCtr(int selectCtr)`
    `protected void` | `setUpdateCtr(int updateCtr)`
    `SearchableElement` | `update(SearchableElement elem)` Najde a upraví prvek ze stromu, případně vloží nový prvek do stromu.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### count

          private int count

      počet prvků ve stromě

    - #### root

          private TreeNode root

      kořen stromu

    - #### selectCtr

          private int selectCtr

      Provozní měření. Počítadlo operací select.

    - #### updateCtr

          private int updateCtr

      Provozní měření. Počítadlo operací update.

    - #### removeCtr

          private int removeCtr

      Provozní měření. Počítadlo operací remove.

  - ### Constructor Detail

    - #### RecursiveSearchTree

          public RecursiveSearchTree()

      Vyrobí instanci rekurzivního vyhledávacího stromu.

      Užití: zejména k inicializaci proměnných typu RecursiveSearchTree.

  - ### Method Detail

    - #### finalize

          protected void finalize()
                           throws java.lang.Throwable

      Zruší instanci třídy RecursiveSearchTree.

      Užití: Přímo nepoužívejte! Volá se automaticky při destrukci.

      Overrides:
        `finalize` in class `java.lang.Object`
      Throws:
        `java.lang.Throwable` - zděděná výjimka

    - #### createNode

          protected TreeNode createNode(SearchableElement elem)

      Vyrobí uzel správného typu podle redefinice v potomkovi. Odvozeny jsou zejména dokonale vyvážený strom a AVL-strom.

      Užití: v metodě TreeNode.update

      Parameters:
        `elem` - prvek, ze kterého se vyrobí uzel stromu
      Returns:
        nový uzel

    - #### update

          public SearchableElement update(SearchableElement elem)

      Najde a upraví prvek ze stromu, případně vloží nový prvek do stromu.

      Popis: Najde ve stromě prvek podle klíče elem.key a nahradí jej prvkem elem. Jestliže hledaný prvek ve stromě není, zařadí nový prvek na správné místo do stromu.

      Specified by:
        `update` in interface `Searchable`
      Parameters:
        `elem` - nový prvek, který má nahradit ve stromu prvek původní nebo který se má přidat do stromu
      Returns:
        prvek, který byl nahrazen novým prvkem, nebo null

    - #### select

          public SearchableElement select(SearchableElement key)

      Najde prvek ve stromě. Najde prvek podle klíče key.
      Specified by:
        `select` in interface `Searchable`
      Parameters:
        `key` - klíč prvku, který se má najít
      Returns:
        je-li prvek ve stromě, tak nalezený prvek, jinak null

    - #### remove

          public SearchableElement remove(SearchableElement key)

      Najde a odstraní prvek ze stromu.

      Popis: Najde prvek podle klíče key a odstraní jej ze stromu.

      Specified by:
        `remove` in interface `Searchable`
      Parameters:
        `key` - klíč prvku, který se má odstranit
      Returns:
        odstraněný prvek nebo null v případě, že se nenašel

    - #### isEmpty

          public boolean isEmpty()

      Zjistí, zda je strom prázdný.
      Specified by:
        `isEmpty` in interface `Searchable`
      Returns:
        true když je prázdný, jinak false

    - #### isFull

          public boolean isFull()

      Zjistí, zda je strom plný.
      Specified by:
        `isFull` in interface `Searchable`
      Returns:
        true když je plný, jinak false

    - #### insert

          public void insert(SearchableElement elem)

      Vloží prvek do stromu.
      Specified by:
        `insert` in interface `Searchable`
      Parameters:
        `elem` - prvek, který má být vložen do stromu

    - #### getReadable

          public void getReadable(java.util.List<java.lang.String> aStrings)

      Naplní kolekci řetězců čitelným obsahem stromu.
      Specified by:
        `getReadable` in interface `Searchable`
      Parameters:
        `aStrings` - kolekce řetězců, která má být naplněna čitelným obsahem

    - #### getSortCounter

          public int getSortCounter()

      Provozní měření. V případě třídění redefinujte!
      Specified by:
        `getSortCounter` in interface `Searchable`
      Returns:
        počet kroků řazení

    - #### getOperationCounter

          public int getOperationCounter()

      Provozní měření. Počty klíčových kroků v poslední operaci select, update a remove.
      Specified by:
        `getOperationCounter` in interface `Searchable`
      Returns:
        počet kroků v operaci

    - #### getCount

          public int getCount()

      Zjistí počet prvků ve stromě.
      Specified by:
        `getCount` in interface `Searchable`
      Returns:
        počet prvků ve stromě

    - #### setCount

          protected void setCount(int count)

      Parameters:
        `count` - hodnota, která se má nastavit do atributu count

    - #### getRoot

          protected TreeNode getRoot()

      Returns:
        hodnota atributu root

    - #### setRoot

          protected void setRoot(TreeNode root)

      Parameters:
        `root` - hodnota, která se má nastavit do atributu root

    - #### getSelectCtr

          protected int getSelectCtr()

      Returns:
        hodnota atributu selectCtr

    - #### setSelectCtr

          protected void setSelectCtr(int selectCtr)

      Parameters:
        `selectCtr` - hodnota, která se má nastavit do atributu selectCtr

    - #### getUpdateCtr

          protected int getUpdateCtr()

      Returns:
        hodnota atributu updateCtr

    - #### setUpdateCtr

          protected void setUpdateCtr(int updateCtr)

      Parameters:
        `updateCtr` - hodnota, která se má nastavit do atributu updateCtr

    - #### getRemoveCtr

          protected int getRemoveCtr()

      Returns:
        hodnota atributu removeCtr

    - #### setRemoveCtr

          protected void setRemoveCtr(int removeCtr)

      Parameters:
        `removeCtr` - hodnota, která se má nastavit do atributu removeCtr