This is an old revision of the document!


Arbori Binari de Căutare

Un arbore binar de căutare (BST) este o structură de date arborescentă în care, pentru orice nod de valoare \(x\), toate valorile din subarborele stâng sunt \(< x\), iar toate din cel drept sunt \(> x\). În cadrul acestui laborator vom pune inegalitatea parțială pe subarborele stâng (\(\le x\)). Această proprietate permite căutări eficiente, în medie în timp \(O(\log n)\), și stă la baza multor algoritmi și structuri de date.

TDA Arbori Binari

Reamintim definiția unui arbore binar abstract:

\( \text{Nil}: \mathrm{BTree} \)
\( \text{Node}: \mathbb{E} \times \mathrm{BTree} \times \mathrm{BTree} \to \mathrm{BTree} \)

unde \(\mathbb{E}\) este o mulțime parțial ordonată. Pentru simplitate vom folosi \(\mathbb{N}\), mulțimea numerelor naturale, însă putem lucra cu orice mulțime peste care este definită o relație de ordine \(\le\).


Definiția operatorului \(\mathrm{isBST}\)

\( \mathrm{isBST} : \mathrm{BTree} \to \mathrm{Bool} \\ \mathrm{isBST}(t) = \mathrm{isBSTBetween}(t, -\infty, +\infty) \\ \mathrm{isBSTBetween} : \mathrm{BTree} \times \overline{\mathbb{E}} \times \overline{\mathbb{E}} \to \mathrm{Bool} \\ \mathrm{isBSTBetween}(\mathrm{Nil}, lo, hi) = \text{true} \\ \mathrm{isBSTBetween}(\mathrm{Node}(x,l,r), lo, hi) \;\equiv\; (lo \le x \le hi) \;\land\; \mathrm{isBSTBetween}(l, lo, x) \;\land\; \mathrm{isBSTBetween}(r, x, hi). \)

unde \(\overline{\mathbb{E}} = \mathbb{E} \cup \{-\infty, +\infty\}\).

Elementele \(-\infty\) și \(+\infty\) extind domeniul astfel încât:

\( -\infty < x < +\infty,\forall x \in \mathbb{E}. \)

Exerciții

1. Scrieți definițiile și axiomele pentru următorii operatori:

  • $ {\mathrm{insert} : \mathbb{E} \times \mathrm{BTree} \to \mathrm{BTree} } $
  • $ {\mathrm{min} : \mathrm{BTree} \to \mathbb{E} } $
  • $ {\mathrm{max} : \mathrm{BTree} \to \mathbb{E} } $

2. Demonstrați (prin inducție structurală) că următoarele păstrează invariantul \(\mathrm{isBST}\):

  • $ {\mathrm{insert}} $
  • $ {\mathrm{delete}} $
Soluțiile acestui laborator se găsesc aici