data structures: trees and graphs · trees ¤ a tree is a hierarchical data structure composed of...

24
Data Structures: Trees and Graphs

Upload: others

Post on 24-Jun-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Data Structures: Trees and Graphs · Trees ¤ A tree is a hierarchical data structure composed of nodes. ¤ Root: the top-most node (unlike real trees, trees in computer science grow

Data Structures:Trees and Graphs

Page 2: Data Structures: Trees and Graphs · Trees ¤ A tree is a hierarchical data structure composed of nodes. ¤ Root: the top-most node (unlike real trees, trees in computer science grow

Trees

¤ A tree is a hierarchical data structure composed of nodes.¤ Root: the top-most node (unlike real trees, trees in computer science

grow downward!). Every (non-empty) tree has one.¤ Parent: the node connected directly above the current one. Every node

(except for the root) has one.¤ Child: a node connected below the current one. Each node can have 0

or more.¤ Leaf: a node that has no children.¤ Depth/Level: the length of the path (edges) from the root to a node

(depth/level of the root is 0).¤ Tree Height: the maximum depth from of any node in the tree.

¤ A tree commonly used in computing is a binary tree.¤ A binary tree consists of nodes that have at most 2 children.¤ Commonly used in: data compression, file storage, game trees

2

Page 3: Data Structures: Trees and Graphs · Trees ¤ A tree is a hierarchical data structure composed of nodes. ¤ Root: the top-most node (unlike real trees, trees in computer science grow

Binary Tree Example

3

84

65 96

24

37

50

48

53

Which node is the root?Which nodes are the leaves?Which nodes are internal nodes?What is the height of this tree?

Page 4: Data Structures: Trees and Graphs · Trees ¤ A tree is a hierarchical data structure composed of nodes. ¤ Root: the top-most node (unlike real trees, trees in computer science grow

Binary Tree Example

4

84

65 96

24

37

50

48

53

The root contains the data value 84.There are 4 leaves in this binary tree: nodes containing 48, 37, 50, 53.There are 4 internal nodes in this binary tree: containing 84, 65, 96, 24This binary tree has height 3 – considering root is at level 0,

the length of the longest path from root to a leaf is 3

Level 0

Level 1

Level 2

Level 3

Page 5: Data Structures: Trees and Graphs · Trees ¤ A tree is a hierarchical data structure composed of nodes. ¤ Root: the top-most node (unlike real trees, trees in computer science grow

Binary Trees: A recursive structure!

¤ The yellow node with the key 65 can be viewed as the root of the left subtree, which in turn has ¤ a left subtree of blue nodes¤ a right subtree of orange nodes

¤ In general, Binary Trees can be:¤ Empty¤ A root node with

¤ a left binary tree¤ a right binary tree

5

84

65 96

24

37

50

48

53

Page 6: Data Structures: Trees and Graphs · Trees ¤ A tree is a hierarchical data structure composed of nodes. ¤ Root: the top-most node (unlike real trees, trees in computer science grow

Binary Trees: Implementation

¤ A common implementation of binary trees uses nodes¤ Each node has a “left” node and a “right” node.

¤ How to represent these nodes and pointers? With a Class (like a Struct…)

6

65

24 50

48 37 14

Level  0

Level  1

Level  2

Page 7: Data Structures: Trees and Graphs · Trees ¤ A tree is a hierarchical data structure composed of nodes. ¤ Root: the top-most node (unlike real trees, trees in computer science grow

Implement Using a List

¤ We could also use a list to implement binary trees. For example:0    1    2    3    4    5    6    7

7

65

24 50

48 37 14

Level  0

Level  1

Level  2

- 65 24 50 48 37 - 14

Page 8: Data Structures: Trees and Graphs · Trees ¤ A tree is a hierarchical data structure composed of nodes. ¤ Root: the top-most node (unlike real trees, trees in computer science grow

Binary Search Tree (BST)

¤ A binary search tree (BST) is a binary tree with no duplicate nodes that imposes an ordering on its nodes.

¤ BST ordering invariant: At any node n with value k,¤ all values of nodes in the left subtree of n are strictly less than

k¤ all values of nodes in the right subtree of n are strictly greater

than k

8

Page 9: Data Structures: Trees and Graphs · Trees ¤ A tree is a hierarchical data structure composed of nodes. ¤ Root: the top-most node (unlike real trees, trees in computer science grow

Example: Binary Search Tree

7

84

1 6 9

BST ordering invariant: At any node with value k,all values of elements in the left subtree are strictly less than k and all values of elements in the right subtree are strictly greater than k

(assuming that there are no duplicates in the tree)

Page 10: Data Structures: Trees and Graphs · Trees ¤ A tree is a hierarchical data structure composed of nodes. ¤ Root: the top-most node (unlike real trees, trees in computer science grow

Example: Is this a BST?

10

4

71

6

9

8

3

yesno

3

4

71

6

9

8

3

Page 11: Data Structures: Trees and Graphs · Trees ¤ A tree is a hierarchical data structure composed of nodes. ¤ Root: the top-most node (unlike real trees, trees in computer science grow

Insertion in a BST

¤ For each data value that you wish to insert into the binary search tree:¤ If you reach an empty tree (must test this first, why?), create

a new leaf node with your value at that location¤ Recursively search the BST for your value until you either find

it or reach an empty tree¤ If you find the value, throw an exception since duplicates

are not allowed

11

Page 12: Data Structures: Trees and Graphs · Trees ¤ A tree is a hierarchical data structure composed of nodes. ¤ Root: the top-most node (unlike real trees, trees in computer science grow

Insertion Example

¤ Insert: 84, 41, 96, 24, 37, 50, 13, 98

12

84

41 96

24

37

50

13

98

Page 13: Data Structures: Trees and Graphs · Trees ¤ A tree is a hierarchical data structure composed of nodes. ¤ Root: the top-most node (unlike real trees, trees in computer science grow

13

Binary Search Tree Complexity

6

84

91 5

1

4

7

6

8

9

Tree 1

Tree 2

O(log n) O(n)

Page 14: Data Structures: Trees and Graphs · Trees ¤ A tree is a hierarchical data structure composed of nodes. ¤ Root: the top-most node (unlike real trees, trees in computer science grow

Relationship Data

14

From this…

Page 15: Data Structures: Trees and Graphs · Trees ¤ A tree is a hierarchical data structure composed of nodes. ¤ Root: the top-most node (unlike real trees, trees in computer science grow

Relationship Data

15

To this…

A

B

D

C

GE

F

Page 16: Data Structures: Trees and Graphs · Trees ¤ A tree is a hierarchical data structure composed of nodes. ¤ Root: the top-most node (unlike real trees, trees in computer science grow

Graphs

¤ A graph is a data structure that contains of a set of verticesand a set of edges which connect pairs of the vertices.¤ A vertex (or node) can be connected to any number of other

vertices using edges.¤ An edge may be bidirectional or directed (one-way).¤ An edge may have a weight on it that indicates a cost for

traveling over that edge in the graph.

¤ Unlike trees, graphs can contain cycles¤ In fact, a tree is an acyclic graph

¤ Applications: computer networks, transportation systems, social networks

16

Page 17: Data Structures: Trees and Graphs · Trees ¤ A tree is a hierarchical data structure composed of nodes. ¤ Root: the top-most node (unlike real trees, trees in computer science grow

Example Graphs

17

B

A

D

C

B

A

D

C

Undirected Directed

Vertex

Page 18: Data Structures: Trees and Graphs · Trees ¤ A tree is a hierarchical data structure composed of nodes. ¤ Root: the top-most node (unlike real trees, trees in computer science grow

Graph Implementation

¤ We usually represent graphs using a table (2d list) where each column and row is associated with a specific vertex. This is called an adjacency matrix.

¤ A separate list of vertices shows which vertex name (city, person, etc.) is associated with each index

¤ The values of the 2d list are the weights of the edges between the row vertices and column vertices¤ If there is not an edge between the two vertices, we use

infinity, or None, to represent that

Page 19: Data Structures: Trees and Graphs · Trees ¤ A tree is a hierarchical data structure composed of nodes. ¤ Root: the top-most node (unlike real trees, trees in computer science grow

Graph Representation

19

B

A

D

C6

4

53

7

A B C DA 0 6 7 5B 6 0 4 ∞C 7 4 0 3D 5 ∞ 3 0

A B C DA 0 6 7 5B ∞ 0 4 ∞C 2 ∞ 0 3D ∞ ∞ 9 0

B

A

D

C6

4

53

72

9

fromto

fromto

weight

Page 20: Data Structures: Trees and Graphs · Trees ¤ A tree is a hierarchical data structure composed of nodes. ¤ Root: the top-most node (unlike real trees, trees in computer science grow

Graphs in Python

20

B

A

D

C6

4

53

7

A B C DA 0 6 7 5B 6 0 4 ∞C 7 4 0 3D 5 ∞ 3 0

vertices = ['A', 'B', 'C', 'D']graph = [ [ 0, 6, 7, 5 ], [ 6, 0, 4, None],[ 7, 4, 0, 3],[ 5, None, 3, 0] ]

fromto

Page 21: Data Structures: Trees and Graphs · Trees ¤ A tree is a hierarchical data structure composed of nodes. ¤ Root: the top-most node (unlike real trees, trees in computer science grow

Graph Algorithms

¤ Lots! Here are some examples.

¤ There are algorithms to search graphs efficiently for a value¤ Breadth-first search and Depth-first search

¤ There are algorithms to compute the shortest path between a start vertex and all the others¤ Dijkstra’s algorithm

¤ There are algorithms for operations research, which can be used to solve network flow problems¤ For example, how to efficiently distribute water through a system

of pipes

21

Page 22: Data Structures: Trees and Graphs · Trees ¤ A tree is a hierarchical data structure composed of nodes. ¤ Root: the top-most node (unlike real trees, trees in computer science grow

22

Shortest Path (Dijkstra's algorithm)¤ Assign every node an initial distance (0 to the source, ∞ for all

others); mark all nodes as unvisited

¤ While there are unvisited nodes:¤ select unvisited node with smallest distance (current)¤ consider all unvisited neighbors of current node:

¤ compute distance to each neighbor from current node¤ if less than current distance, replace with new distance

¤ mark current node as visited (and never evaluate again)

Page 23: Data Structures: Trees and Graphs · Trees ¤ A tree is a hierarchical data structure composed of nodes. ¤ Root: the top-most node (unlike real trees, trees in computer science grow

23

Dijkstra example

B

D E

C

F

6

2

2

1917

4

7

5

GA

12

3 4

6

B C D E F G

0 ∞ ∞ ∞ ∞∞∞

A

A->

Page 24: Data Structures: Trees and Graphs · Trees ¤ A tree is a hierarchical data structure composed of nodes. ¤ Root: the top-most node (unlike real trees, trees in computer science grow

24

Dijkstra example

B

D E

C

F

6

2

2

1917

4

7

5

GA

12

3 4

6

C->

B C D E F G

0 ∞ ∞ ∞ ∞∞

5

8

7

12

11

∞ 17 ∞ ∞

A

3

1722

17

8

7

A->

B->

F->

E

G->

D->

11 17 8

1511

13

0 5 3 11 13 8 7

What does this assume?