searchable.recursivesearchtree

## Class TreeNode

- java.lang.Object
- - searchable.recursivesearchtree.TreeNode

- Direct Known Subclasses:
    BalancedAncestor

      class TreeNode
      extends java.lang.Object

  Uzel stromu.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private SearchableElement` | `contents` ohodnocení uzlu
    `private TreeNode` | `left` levý podstrom
    `private TreeNode` | `right` pravý podstrom
    `private int` | `weight` váha podstromu, jehož kořenem je tento uzel

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TreeNode(SearchableElement elem)` Vyrobí uzel stromu.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `finalize()` Zruší instanci třídy TreeNode.
    `protected SearchableElement` | `getContents()`
    `int` | `getCount()` Zjistí počet prvků ve stromě.
    `protected TreeNode` | `getLeft()`
    `void` | `getReadable(java.util.List<java.lang.String> aStrings)` Naplní kolekci řetězců čitelným obsahem stromu.
    `protected TreeNode` | `getRight()`
    `protected int` | `getWeight()`
    `RemoveResult` | `remove(SearchableElement key, RecursiveSearchTree tree, TreeNode parent)` Najít a odstranit prvek ze stromu.
    `protected RemoveResult` | `removeLeftmost(TreeNode parent, RecursiveSearchTree tree)` Najde nejlevější uzel stromu.
    `protected RemoveResult` | `removeRightmost(TreeNode parent, RecursiveSearchTree tree)` Najde nejpravější uzel stromu.
    `TreeNode` | `select(SearchableElement key, RecursiveSearchTree tree)` Najde uzel stromu.
    `protected void` | `setContents(SearchableElement Contents)`
    `protected void` | `setLeft(TreeNode Left)`
    `protected void` | `setRight(TreeNode Right)`
    `protected void` | `setWeight()` Nastaví váhu podstromu - počet uzlů nebo počet vrstev.
    `protected void` | `setWeight(int Weight)`
    `SearchableElement` | `update(SearchableElement elem, RecursiveSearchTree tree)` 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

    - #### contents

          private SearchableElement contents

      ohodnocení uzlu

    - #### left

          private TreeNode left

      levý podstrom

    - #### right

          private TreeNode right

      pravý podstrom

    - #### weight

          private int weight

      váha podstromu, jehož kořenem je tento uzel

  - ### Constructor Detail

    - #### TreeNode

          public TreeNode(SearchableElement elem)

      Vyrobí uzel stromu.

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

      Parameters:
        `elem` - prvek, který se má stát uzlem stromu

  - ### Method Detail

    - #### finalize

          protected void finalize()
                           throws java.lang.Throwable

      Zruší instanci třídy TreeNode.

      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

    - #### select

          public TreeNode select(SearchableElement key,
                                 RecursiveSearchTree tree)

      Najde uzel stromu. Najde uzel podle klíče prvku. Prvek je obsažen v uzlu.
      Parameters:
        `key` - klíč prvku, podle kterého se má najít uzel
        `tree` - k záznamu provozních měření
      Returns:
        příslušný uzel je-li prvek ve stromě, jinak null

    - #### update

          public SearchableElement update(SearchableElement elem,
                                          RecursiveSearchTree tree)

      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.

      Parameters:
        `elem` - nový prvek, který má nahradit ve stromě prvek původní nebo který se má přidat do stromu
        `tree` - k záznamu provozních měření
      Returns:
        null nebo prvek, který byl nahrazen novým prvkem

    - #### remove

          public RemoveResult remove(SearchableElement key,
                                     RecursiveSearchTree tree,
                                     TreeNode parent)

      Najít a odstranit prvek ze stromu.

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

      Parameters:
        `key` - klíč prvku, který se má odstranit
        `tree` - k záznamu provozních měření
        `parent` - reference na referenci na tento uzel v uzlu rodičovském (Rodičovská reference na tento uzel se musí změnit v případě, že tento uzel bude odstraněn ze stromu.)
      Returns:
        odstraněný prvek nebo null v případě, že se nenašel

    - #### removeRightmost

          protected RemoveResult removeRightmost(TreeNode parent,
                                                 RecursiveSearchTree tree)

      Najde nejpravější uzel stromu.

      Popis: prohledává pravé větve až k null, poslední pravý uzel vyjme ze stromu a vrátí jej jako funkční hodnotu.

      Parameters:
        `parent` - reference na referenci na tento uzel v uzlu rodičovském (Rodičovská reference na tento uzel se musí změnit v případě, že tento uzel bude vyňat ze stromu.)
        `tree` - k záznamu provozních měření
      Returns:
        nejpravější uzel stromu

    - #### removeLeftmost

          protected RemoveResult removeLeftmost(TreeNode parent,
                                                RecursiveSearchTree tree)

      Najde nejlevější uzel stromu.

      Popis: prohledává levé větve až k null, poslední levý uzel vyjme ze stromu a vrátí jej jako funkční hodnotu.

      Parameters:
        `parent` - reference na referenci na tento uzel v uzlu rodičovském (Rodičovská reference na tento uzel se musí změnit v případě, že tento uzel bude vyňat ze stromu.)
        `tree` - k záznamu provozních měření
      Returns:
        nejlevější uzel stromu

    - #### getCount

          public int getCount()

      Zjistí počet prvků ve stromě.

      Popis: počítá se při každém zavolání vždy znovu, rekurzí, po 1.

      Returns:
        počet prvků ve stromě

    - #### getReadable

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

      Naplní kolekci řetězců čitelným obsahem stromu.

      Popis: projde strom do hloubky a průběžně naplní aStrings správně seřazenými prvky.

      Parameters:
        `aStrings` - kolekce řetězců pro listbox

    - #### setWeight

          protected void setWeight()

      Nastaví váhu podstromu - počet uzlů nebo počet vrstev.

    - #### getContents

          protected SearchableElement getContents()

      Returns:
        the Contents

    - #### setContents

          protected void setContents(SearchableElement Contents)

      Parameters:
        `Contents` - the Contents to set

    - #### getLeft

          protected TreeNode getLeft()

      Returns:
        the Left

    - #### setLeft

          protected void setLeft(TreeNode Left)

      Parameters:
        `Left` - the Left to set

    - #### getRight

          protected TreeNode getRight()

      Returns:
        the Right

    - #### setRight

          protected void setRight(TreeNode Right)

      Parameters:
        `Right` - the Right to set

    - #### getWeight

          protected int getWeight()

      Returns:
        the Weight

    - #### setWeight

          protected void setWeight(int Weight)

      Parameters:
        `Weight` - the Weight to set