Files
BinarySearchTree/README.md

2.1 KiB
Raw Blame History

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/postorder) samt borttagning av noder.

Notera: I den kod som följde med finns referenser till defs.h samt typerna dataType, ptrType och klassen/structen treeNode som inte följde med i uppladdningen. README:n nedan utgår från hur gränssnittet ser ut i tree.h/tree.cpp och beskriver hur du kan komplettera.

tree.h

Deklarerar klassen treeClass med:

  • ptrType root pekare till rotnoden
  • seek, 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:

  • treeNode förväntas vara en nod med fälten data, left, right.
  • dataType är datatypen som lagras i trädet (t.ex. int eller en struct med jämförelseoperatorer).
  • ptrType är sannolikt treeNode*.

Bygga & köra

Med g++

g++ -std=c++17 -O2 -Wall -Wextra -o bst main.cpp tree.cpp
./bst

Traverseringar

  • Preorder: Rot → Vänster → Höger
  • Inorder: Vänster → Rot → Höger (ger sorterad ordning för BST)
  • Postorder: Vänster → Höger → Rot

Borttagning (översikt)

del hittar noden att ta bort, delRoot hanterar tre fall:

  1. Bladnod → delete, sätt pekaren till nullptr.
  2. En ensam höger- eller vänstergren → flytta upp barnpekaren.
  3. 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

  • Nullskydd i del: Kontrollera att root inte är nullptr innan jämförelser.
  • isEmpty kan returnera root == nullptr direkt.
  • Konstkorrekthet: Markera lämpliga metoder som const där möjligt.
  • Separera I/O: Låt traversering skriva till en ström (std::ostream&) istället för std::cout direkt.