10a. Bomen

2021-03-12
slides.com/jod/pt_10a

Docent: Jo Devriendt

Assistent: Ann Philips

Coördinator: Joost Vennekens

voornaam.achternaam@kuleuven.be

Programmeertechnieken [B-KUL-YI0855]

De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021

Programmeertechnieken [B-KUL-YI0855]

De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021

Definitie

  • Gerichte graaf: knopen en gerichte bogen (geen gewichten)
  • Recursieve definitie:
    • Lege graaf
    • Eén knoop
    • Knoop met één of meer bogen naar bomen (met unieke knopen)

1

2

4

3

5

6

7

Allemaal bomen

Programmeertechnieken [B-KUL-YI0855]

De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021

Terminologie

1

2

4

3

5

6

7

root / wortel

edge / boog / tak

interne
node / knoop

leaf / blad

  • 2 is een child / kind van 1
  • 1 is een parent / ouder van 2
  • 3 is een descendant van 1
  • 1 is een ancestor van 3

level 1

level 2

level 0

heighth / hoogte 3

Programmeertechnieken [B-KUL-YI0855]

De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021

Terminologie 2

1

2

4

3

  • Een boom is binair indien elke node exact 0 of 2 kinderen heeft
  • Een binaire boom is ideaal als elk level volledig "gevuld" is
    • #nodes =
  • Een binaire boom is compleet indien
    enkel het laatste level niet gevuld is, en
    alle nodes van dat level links zitten
    • #nodes

5

6

7

9

8

1 + 2 + 4 + 8 + \ldots = 2^\mathit{hoogte} -1
2^{\mathit{hoogte}-1}

Programmeertechnieken [B-KUL-YI0855]

De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021

Als datastructuur

typedef struct node {
  int data;
  struct node* links;
  struct node* rechts;
} Node;

Programmeertechnieken [B-KUL-YI0855]

De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021

Samenvatting

  • Bomen zijn gerichte grafen met een parent/child relatie tussen de nodes
  • Bomen kunnen worden gebruikt als basis voor niet-lineaire datastructuren