Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

72
Trees and Graphs Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy http://academy.telerik.com

Transcript of Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Page 1: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Trees and GraphsTrees, Binary Search Trees, Balanced Trees,

Graphs

Graph FundamentalsTelerik Algo Academyhttp://academy.telerik.com

Page 2: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Table of Contents1. Tree-like Data Structures

2. Trees and Related Terminology

3. Traversing Trees

4. Graphs Graph Definitions Representing Graphs Graph Traversal Algorithms Connected Components

2

Page 3: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Tree-like Data Structures

Trees, Balanced Trees, Graphs, Networks

Page 4: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Tree-like Data Structures

Tree-like data structures are Branched recursive data structures

Consisting of nodes

Each node can be connected to other nodes

Examples of tree-like structures Trees: binary / other degree,

balanced, etc. Graphs: directed / undirected,

weighted, etc. Networks

4

Page 5: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Tree-like Data Structures

5

Project Manager

Team Leader

De-signer

QA Team Leader

Developer 1

Developer 2

Tester 1Developer

3 Tester 2

Tree

Graph

2

36

1

45

7

19

21

141

12 31

4

11

5 (20)

5 (10)

15 (15)

15 (3

0) 5 (5)

20(20)

10 (40)

Network

Page 6: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Trees and Related Terminology

Node, Edge, Root, Children, Parent, Leaf , Binary Search Tree,

Balanced Tree

Page 7: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Trees Tree data structure – terminology

Node, edge, root, child, children, siblings, parent, ancestor, descendant, predecessor, successor, internal node, leaf, depth, height, subtree

Height = 3

Depth 0

Depth 1

Depth 2

17

15149

6 5 8

7

Page 8: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Binary Trees

Binary trees: most widespread form Each node has at most 2 children

10

17

159

6 5 8

Root node

Left subtree

Right child

Right child

Left child 8

Page 9: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Tree TraversalsDFS and BFS Traversals

Page 10: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Tree Traversal Algorithms

Traversing a tree means to visit each of its nodes exactly one in particular order Many traversal algorithms are

known Depth-First Search (DFS)

Visit node's successors first

Usually implemented by recursion

Breadth-First Search (BFS) Nearest nodes visited first

Implemented by a queue16

Page 11: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Depth-First Search first visits all descendants of given node recursively, finally visits the node itself

DFS algorithm pseudo code

Depth-First Search (DFS)

DFS(node)

{

for each child c of

node

DFS(c);

print the current node;

}

7

1419

23 6

21

311 121 2 3

4 5 8

6 7

9

17

Page 12: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

DFS in Action (Step 1) Stack: 7 Output: (empty)

18

7

1419

23 6

21

311 12

Page 13: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

DFS in Action (Step 2) Stack: 7, 19 Output: (empty)

19

7

1419

23 6

21

311 12

Page 14: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

DFS in Action (Step 3) Stack: 7, 19, 1 Output: (empty)

20

7

1419

23 6

21

311 12

Page 15: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

DFS in Action (Step 4) Stack: 7, 19 Output: 1

21

7

1419

23 6

21

311 12

Page 16: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

DFS in Action (Step 5) Stack: 7, 19, 12 Output: 1

22

7

1419

23 6

21

311 12

Page 17: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

DFS in Action (Step 6) Stack: 7, 19 Output: 1, 12

23

7

1419

23 6

21

311 12

Page 18: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

DFS in Action (Step 7) Stack: 7, 19, 31 Output: 1, 12

24

7

1419

23 6

21

311 12

Page 19: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

DFS in Action (Step 8) Stack: 7, 19 Output: 1, 12, 31

25

7

1419

23 6

21

311 12

Page 20: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

DFS in Action (Step 9) Stack: 7 Output: 1, 12, 31, 19

26

7

1419

23 6

21

311 12

Page 21: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

DFS in Action (Step 10) Stack: 7, 21 Output: 1, 12, 31, 19

27

7

1419

23 6

21

311 12

Page 22: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

DFS in Action (Step 11) Stack: 7 Output: 1, 12, 31, 19, 21

28

7

1419

23 6

21

311 12

Page 23: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

DFS in Action (Step 12) Stack: 7, 14 Output: 1, 12, 31, 19, 21

29

7

1419

23 6

21

311 12

Page 24: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

DFS in Action (Step 13) Stack: 7, 14, 23 Output: 1, 12, 31, 19, 21

30

7

1419

23 6

21

311 12

Page 25: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

DFS in Action (Step 14) Stack: 7, 14 Output: 1, 12, 31, 19, 21, 23

31

7

1419

23 6

21

311 12

Page 26: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

DFS in Action (Step 15)

Stack: 7, 14, 6 Output: 1, 12, 31, 19, 21, 23

32

7

1419

23 6

21

311 12

Page 27: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

DFS in Action (Step 16) Stack: 7, 14 Output: 1, 12, 31, 19, 21, 23, 6

33

7

1419

23 6

21

311 12

Page 28: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

DFS in Action (Step 17) Stack: 7 Output: 1, 12, 31, 19, 21, 23, 6, 14

34

7

1419

23 6

21

311 12

Page 29: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

DFS in Action (Step 18) Stack: (empty) Output: 1, 12, 31, 19, 21, 23, 6, 14, 7

35

7

1419

23 6

21

311 12

Traversal finished

Page 30: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Breadth-First Search first visits the neighbor nodes, later their neighbors, etc.

BFS algorithm pseudo code

Breadth-First Search (BFS)

BFS(node)

{

queue node

while queue not empty

v queue

print v

for each child c of v

queue c

}

7

1419

23 6

21

311 125 6 7

2 3 4

8 9

1

36

Page 31: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

BFS in Action (Step 1) Queue: 7 Output: 7

37

7

1419

23 6

21

311 12

Page 32: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

BFS in Action (Step 2) Queue: 7, 19 Output: 7

38

7

1419

23 6

21

311 12

Page 33: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

BFS in Action (Step 3) Queue: 7, 19, 21 Output: 7

39

7

1419

23 6

21

311 12

Page 34: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

BFS in Action (Step 4) Queue: 7, 19, 21, 14 Output: 7

40

7

1419

23 6

21

311 12

Page 35: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

BFS in Action (Step 5) Queue: 7, 19, 21, 14 Output: 7, 19

41

7

1419

23 6

21

311 12

Page 36: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

BFS in Action (Step 6) Queue: 7, 19, 21, 14, 1 Output: 7, 19

42

7

1419

23 6

21

311 12

Page 37: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

BFS in Action (Step 7) Queue: 7, 19, 21, 14, 1, 12 Output: 7, 19

43

7

1419

23 6

21

311 12

Page 38: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

BFS in Action (Step 8) Queue: 7, 19, 21, 14, 1, 12, 31 Output: 7, 19

44

7

1419

23 6

21

311 12

Page 39: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

BFS in Action (Step 9) Queue: 7, 19, 21, 14, 1, 12, 31 Output: 7, 19, 21

45

7

1419

23 6

21

311 12

Page 40: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

BFS in Action (Step 10) Queue: 7, 19, 21, 14, 1, 12, 31 Output: 7, 19, 21, 14

46

7

1419

23 6

21

311 12

Page 41: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

BFS in Action (Step 11) Queue: 7, 19, 21, 14, 1, 12, 31, 23 Output: 7, 19, 21, 14

47

7

1419

23 6

21

311 12

Page 42: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

BFS in Action (Step 12) Queue: 7, 19, 21, 14, 1, 12, 31, 23, 6 Output: 7, 19, 21, 14

48

7

1419

23 6

21

311 12

Page 43: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

BFS in Action (Step 13) Queue: 7, 19, 21, 14, 1, 12, 31, 23, 6 Output: 7, 19, 21, 14, 1

49

7

1419

23 6

21

311 12

Page 44: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

BFS in Action (Step 14) Queue: 7, 19, 21, 14, 1, 12, 31, 23, 6 Output: 7, 19, 21, 14, 1, 12

50

7

1419

23 6

21

311 12

Page 45: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

BFS in Action (Step 15) Queue: 7, 19, 21, 14, 1, 12, 31, 23, 6 Output: 7, 19, 21, 14, 1, 12, 31

51

7

1419

23 6

21

311 12

Page 46: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

BFS in Action (Step 16) Queue: 7, 19, 21, 14, 1, 12, 31, 23, 6 Output: 7, 19, 21, 14, 1, 12, 31, 23

52

7

1419

23 6

21

311 12

Page 47: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

BFS in Action (Step 16)

Queue: 7, 19, 21, 14, 1, 12, 31, 23, 6 Output: 7, 19, 21, 14, 1, 12, 31, 23, 6

53

7

1419

23 6

21

311 12

Page 48: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

BFS in Action (Step 17) Queue: 7, 19, 21, 14, 1, 12, 31, 23, 6 Output: 7, 19, 21, 14, 1, 12, 31, 23, 6

54

7

1419

23 6

21

311 12

The queue

is empty stop

Page 49: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Binary Trees DFS Traversals

DFS traversal of binary trees can be done in pre-order, in-order and post-order

Pre-order: root, left, right 17, 9, 6, 12, 19, 25

In-order: left, root, right 6, 9, 12, 17, 19, 25

Post-order: left, right, root 6, 12, 9, 25, 19, 17

17

199

6 12 25

55

Page 50: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Iterative DFS and BFS What will happen if in the Breadth-

First Search (BFS) algorithm a stack is used instead of queue? An iterative Depth-First Search (DFS) –

in-order

56

BFS(node)

{

queue node

while queue not empty

v queue

print v

for each child c of

v

queue c

}

DFS(node)

{

stack node

while stack not empty

v stack

print v

for each child c of

v

stack c

}

Page 51: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

GraphsDefinitions, Representation, Traversal

Algorithms

Page 52: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Graph Data Structure

Set of nodes with many-to-many relationship between them is called graph Each node has multiple predecessors

Each node has multiple successors

7

19

21

141

12 31

4

11

Node with multiple

predecessors

Node with

multiple success

ors

58

Page 53: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Graph Definitions Node (vertex)

Element of graph Can have name or value Keeps a list of adjacent nodes

Edge Connection between two nodes Can be directed / undirected Can be weighted / unweighted Can have name / value

A

Node

A

Edge

B

59

Page 54: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Graph Definitions (2)

Directed graph Edges have

direction

Undirected graph Undirected

edges

7

19

21

1

12

4

322 2

3

G

J

F

D

A

E C H

60

Page 55: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Graph Definitions (3)

Weighted graph Weight (cost) is associated with

each edge

G

J

F

D

A

E C H

Q

K

N

104

14

6 16

9

8

7

5

22

3

61

Page 56: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Graph Definitions (4) Path (in undirected graph)

Sequence of nodes n1, n2, … nk

Edge exists between each pair of nodes ni, ni+1

Examples: A, B, C is a path

H, K, C is not a path

G

CB

A

H N

K

62

Page 57: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Graph Definitions (5) Path (in directed graph)

Sequence of nodes n1, n2, … nk

Directed edge exists between each pair of nodes ni, ni+1

Examples: A, B, C is a path

A, G, K is not a path

G

CB

A

H N

K

63

Page 58: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Graph Definitions (6) Cycle

Path that ends back at the starting node Example:

A, B, C, G, A

Simple path No cycles in path

Acyclic graph Graph with no cycles

Acyclic undirected graphs are trees

G

CB

A

H N

K

64

Page 59: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Unconnected graph with two

connected component

s

Graph Definitions (7) Two nodes are reachable if

Path exists between them Connected graph

Every node is reachable from any other node

G

JF

D

A

Connected graph

G

J

F

D

A

E C H

65

Page 60: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Graphs and Their Applications

Graphs have many real-world applications Modeling a computer network like

Internet Routes are simple paths in the

network

Modeling a city map Streets are edges, crossings are

vertices

Social networks People are nodes and their

connections are edges

State machines States are nodes, transitions are

edges

66

Page 61: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Representing Graphs

Adjacency list Each node holds

a list of its neighbors

Adjacency matrix Each cell keeps

whether and how two nodes are connected

Set of edges

0 1 0 1

0 0 1 0

1 0 0 0

0 1 0 0

1

2

3

4

1 2 3 4

{1,2} {1,4} {2,3} {3,1} {4,2}

1 {2, 4}2 {3}3 {1}4 {2}

2

41

3

67

Page 62: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Representing Graphs in C#

public class Graph{ int[][] childNodes; public Graph(int[][] nodes) { this.childNodes = nodes; }}Graph g = new Graph(new int[][] { new int[] {3, 6}, // successors of vertice 0 new int[] {2, 3, 4, 5, 6}, // successors of vertice 1 new int[] {1, 4, 5}, // successors of vertice 2 new int[] {0, 1, 5}, // successors of vertice 3 new int[] {1, 2, 6}, // successors of vertice 4 new int[] {1, 2, 3}, // successors of vertice 5 new int[] {0, 1, 4} // successors of vertice 6});

06

41

52

3

68

Page 63: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Graph Traversal Algorithms

Depth-First Search (DFS) and Breadth-First Search (BFS) can traverse graphs Each vertex should be is visited at

most once

69

BFS(node){ queue node visited[node] = true while queue not empty v queue print v for each child c of v if not visited[c] queue c visited[c] = true}

DFS(node){ stack node visited[node] = true while stack not empty v stack print v for each child c of v if not visited[c] stack c visited[c] = true}

Page 64: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Recursive DFS Graph Traversal

70

void TraverseDFSRecursive(node){ if (not visited[node]) { visited[node] = true print node foreach child node c of node { TraverseDFSRecursive(c); } }}

vois Main(){ TraverseDFS(firstNode);}

Page 65: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Graphs and TraversalsLive Demo

Page 66: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

ConnectivityConnecting the chain

Page 67: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Connectivity Connected component of undirected graph A sub-graph in which any two

nodes are connected to each other by paths

73

Page 68: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Connectivity (2) A simple way to find number of connected components A loop through all nodes and start a

DFS or BFS traversing from any unvisited node

Each time you start a new traversing You find a new connected

component!

74

Page 69: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Connectivity (3)

75

foreach node from graph G{ if node is unvisited { DFS(node); countOfComponents++; }}

Algorithm:

*Note: Do not forget to mark each node in the DFS as visited!

F

D

A

G

CH

Page 70: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Connectivity (4) Connected graph

A graph with only one connected component

In every connected graph a path exists between any two nodes

Checking whether a graph is connected If DFS / BFS passes through

all vertices graph is connected!

76

Page 71: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Summary Trees are recursive data structure –

node with set of children which are also nodes

Binary Search Trees are ordered binary trees

Balanced trees have weight of log(n) Graphs are sets of nodes with many-

to-many relationship between them Can be directed/undirected, weighted /

unweighted, connected / not connected, etc.

Tree / graph traversals can be done by Depth-First Search (DFS) and Breadth-First Search (BFS)

77

Page 72: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy .

Trees and Graphs

Questions??

?

????

??

?

http://algoacademy.telerik.com