Binární strom

Jednoduchý binární strom

Binární strom je pojem z teorie grafů a zároveň datová struktura, používaná k ukládání a vyhledávání dat v informatice.

Binární strom je strom ve smyslu používaném v teorii grafů. Jedná se o orientovaný graf s jedním vrcholem (kořenem), z něhož existuje cesta do všech vrcholů grafu. Každý vrchol binárního stromu může mít maximálně dva orientované syny a s výjimkou kořene právě jednoho předka. Kořen předka nemá.

V praktickém programování je obvykle binární strom reprezentován dvěma způsoby:

  1. pomocí dynamické struktury, kde jsou hrany reprezentovány ukazateli. Takto se reprezentuje například AVL-strom. Implementačně mohou mít vrcholy též ukazatel na rodiče, kromě dvou ukazatelů na potomky.
  2. pomocí pole, kde prvek s indexem i má následníky s indexem 2i+1 a 2i+2 (za předpokladu, že pole je indexováno od 0). Takto je například reprezentována halda v algoritmu heapsort.
Diagram binárního stromu

Binární strom je nejčastěji používán jako binární vyhledávací strom a halda.

Typy binárních stromů

  • Binární strom obsahuje uzly které mají nejvýš 2 syny.
  • Plný binární strom: každý vnitřní uzel má dva syny.
  • Vyvážený binární strom: hloubka podstromů se od sebe liší maximálně o jedna.
  • Úplný binární strom: vyvážený binární strom plněný zleva. Jeden poslední vnitřní uzel nemusí být stupně k

(Terminologie okolo vyvážení a (ú)plnosti není ustálená a jednotná. V různých aplikacích se hodí různě přísné podmínky.)

Vlastnosti stromů

poznámka: pro níže uvedené rovnice platí: – hloubka stromu, – počet uzlů, – počet listů , – počet vnitřních uzlů, – počet nillů,

  • Úplný binární strom
    • minimální počet uzlů získáme z rovnice a maximální počet .
    • počet nillů (NULL ukazatelů) roven .
    • počet listů roven (n/2 zaokrouhleno nahoru).
  • Plný binární strom
    • počet uzlů získáme z rovnice .
    • počet uzlů v úplném binárním získáme .

Související články

Externí odkazy

Média použitá na této stránce

Binary tree in array.svg

Diagram demonstrating how an implicit representation of a complete binary tree can be stored in an array, as used in the heap data structure of heap sort. Created by Derrick Coetzee in Adobe Illustrator from the original source for en:Image:Binary_tree_in_array.png, which this replaces. chut

mc randi hmc
Binary tree.svg
A binary tree image made in Adobe Illustrator based on the original source of Binary tree.png, to replace that image. This is much like Binary search tree.svg, but with the elements shuffled to avoid insinuating that binary trees have to be in order.