Download - 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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/1.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/2.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/3.jpg)
Tree-like Data Structures
Trees, Balanced Trees, Graphs, Networks
![Page 4: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/4.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/5.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/6.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/7.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/8.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/9.jpg)
Tree TraversalsDFS and BFS Traversals
![Page 10: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/10.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/11.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/12.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/13.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/14.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/15.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/16.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/17.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/18.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/19.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/20.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/21.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/22.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/23.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/24.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/25.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/26.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/27.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/28.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/29.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/30.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/31.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/32.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/33.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/34.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/35.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/36.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/37.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/38.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/39.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/40.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/41.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/42.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/43.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/44.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/45.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/46.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/47.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/48.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/49.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/50.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/51.jpg)
GraphsDefinitions, Representation, Traversal
Algorithms
![Page 52: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/52.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/53.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/54.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/55.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/56.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/57.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/58.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/59.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/60.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/61.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/62.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/63.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/64.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/65.jpg)
Graphs and TraversalsLive Demo
![Page 66: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/66.jpg)
ConnectivityConnecting the chain
![Page 67: Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/67.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/68.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/69.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/70.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/71.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062309/5697c01f1a28abf838cd1d46/html5/thumbnails/72.jpg)
Trees and Graphs
Questions??
?
????
??
?
http://algoacademy.telerik.com