Binärt sökträd (C++)
Ett enkelt projekt som implementerar ett binärt sökträd (BST) i C++. Koden innehåller grundläggande operationer som insättning, sökning, traversering (pre/in/post‑order) samt borttagning av noder.
Notera: I den kod som följde med finns referenser till
defs.hsamt typernadataType,ptrTypeoch klassen/structentreeNodesom inte följde med i uppladdningen. README:n nedan utgår från hur gränssnittet ser ut itree.h/tree.cppoch beskriver hur du kan komplettera.
tree.h
Deklarerar klassen treeClass med:
ptrType root– pekare till rotnodenseek,insert,del,delRoot,delLeft– kärnoperationer- Traversering:
preOrder,inOrder,postOrder save– skriver trädets noder till en ström
tree.cpp
Definitioner för metoderna ovan. Använder defs.h, dataType, ptrType och treeNode:
treeNodeförväntas vara en nod med fältendata,left,right.dataTypeär datatypen som lagras i trädet (t.ex.inteller en struct med jämförelseoperatorer).ptrTypeär sannolikttreeNode*.
Bygga & köra
Med g++
g++ -std=c++17 -O2 -Wall -Wextra -o bst main.cpp tree.cpp
./bst
Traverseringar
- Pre‑order: Rot → Vänster → Höger
- In‑order: Vänster → Rot → Höger (ger sorterad ordning för BST)
- Post‑order: Vänster → Höger → Rot
Borttagning (översikt)
del hittar noden att ta bort, delRoot hanterar tre fall:
- Bladnod → delete, sätt pekaren till
nullptr. - En ensam höger- eller vänstergren → flytta upp barnpekaren.
- Två barn → hämta minsta värdet i höger delträd (via
delLeft), ersätt data och ta bort den noden.
Kända förbättringar
- Null‑skydd i
del: Kontrollera attrootinte ärnullptrinnan jämförelser. isEmptykan returneraroot == nullptrdirekt.- Konstkorrekthet: Markera lämpliga metoder som
constdär möjligt. - Separera I/O: Låt traversering skriva till en ström (
std::ostream&) istället förstd::coutdirekt.
Description
Languages
C++
93.6%
C
6.4%