Cvičení 5 - BST II
Informatici (cvičení v C)
Téma: binární vyhledávací stromy II
- minimum a maximum v zadaném podstromu
- mazání hodnot ze stromu
- průchod do šířky
Úkoly
Z minula máte strukutry a procedury pro základní prácí s BST (přidávání, výpis v pořadí, hloubka stromu). Tj.
- Implementujte vhodné struktury pro binární vyhledávací strom (uzel stromu
node
; stromtree
- obsahující ukazatel na kořen). Strom bude obsahovat hodnoty typuint
. - Implementujte následující procedury pro práci s BST:
- přidání prvku do stromu
void add(tree *t, int data)
- vypsání prvků ve stromě ve vzestupném pořadí
void print_in_order(tree t)
- výpočet hloubky stromu
int depth(tree t)
- přidání prvku do stromu
Dnes přidejte následující procedury:
- Hledání minima a maxima v (kořenovým uzlem) zadaném podstromu:
int tree_max(node *root)
aint tree_min(node *root)
. Můžete předpokládát, že procedury nikdy nebudou volány sroot == NULL
, tj. minimum i maximum budou vždy existovat. - Odebírání prvku ze stromu:
int tree_remove(tree *t, int data)
vracející 1 pokud něco bylo smazáno a 0 jinak. - Výpis prvků stromu v pořadí průchodu stromem do šířky:
void print_bft(tree *t)
. - V předchozím úkolu potřebujete frontu, naprogramujte obousměrný seznam a použijte jej k implementaci fronty s operacemi enqueue i dequeue pracujícími v O(1).
Učitelé (cvičení v Pythonu)
Téma: binární vyhledávací stromy
- binární vyhledávací stromy (BST)
- minimum a maximum v zadaném podstromu
- mazání hodnot ze stromu
- průchod do šířky
Úkoly
- Implementujte vhodné struktury pro binární vyhledávací strom (uzel stromu
node
; stromtree
- obsahující kořen stromu). Můžete předpokládat, že strom bude obsahovat pouze celá čísla. - Implementujte procedury:
- Vyhledávání v BST.
- Přidávání do BST.
- Výpočet výšky BST.
- Průchody stromem do hloubky i do šířky.
- Hledání minima a maxima v BST.
- Mazání z BST.