Data Structure and Algorithm: Recursion
Data Structure and Algorithm: Recursion
Recursion
1
Tower of Hanoi
• Can move only one disk at a time
• Can not put bigger disk on smaller disk
2
Tower of Hanoi
• 1 Disks (Source: A, Destination: C)
A B C
3
Tower of Hanoi
• 1 Disks (Source: A, Destination: C)
– Move a disk from A to C
A B C
4
Tower of Hanoi
• 2 Disks (Source: A, Auxiliary: B, Destination: C)
A B C
5
Tower of Hanoi
• 2 Disks (Source: A, Auxiliary: B, Destination: C)
– Move a disk from A to B
A B C
6
Tower of Hanoi
• 2 Disks (Source: A, Auxiliary: B, Destination: C)
– Move a disk from A to B
– Move a disk from A to C
A B C
7
Tower of Hanoi
• 2 Disks (Source: A, Auxiliary: B, Destination: C)
– Move a disk from A to B
– Move a disk from A to C
– Move a disk from B to C
A B C
8
Tower of Hanoi
• 3 Disks
A B C
9
Tower of Hanoi
• 3 Disks
– Move 2 disks from A to B (Source: A, Auxiliary: C, Destination: B)
A B C
10
Tower of Hanoi
• 3 Disks
– Move 2 disks from A to B (Source: A, Auxiliary: C, Destination: B)
– Move a disk from A to C
A B C
11
Tower of Hanoi
• 3 Disks
– Move 2 disks from A to B (Source: A, Auxiliary: C, Destination: B)
– Move a disk from A to C
– Move 2 disks from B to C (Source: B, Auxiliary: A, Destination: C)
A B C
12
Tower of Hanoi
• n Disks (Recursive)
– Move n-1 disks from A to B (Source: A, Auxiliary: C, Destination: B)
– Move a disk from A to C
– Move n-1 disks from B to C (Source: B, Auxiliary: A, Destination: C)
A B C
13
• n Disks (Recursive)
– Move n-1 disks from A to B (Source: A, Auxiliary: C, Destination: B)
– Move a disk from A to C
– Move n-1 disks from B to C (Source: B, Auxiliary: A, Destination: C)
14
• n Disks (Recursive)
– Move n-1 disks from A to B (Source: A, Auxiliary: C, Destination: B)
– Move a disk from A to C
– Move n-1 disks from B to C (Source: B, Auxiliary: A, Destination: C)
15
TOH( 3, ‘A’, ‘B’, ‘C’)
16
TOH( 3, ‘A’, ‘B’, ‘C’)
17
TOH( 3, ‘A’, ‘B’, ‘C’)
18
TOH( 3, ‘A’, ‘B’, ‘C’)
19
TOH( 3, ‘A’, ‘B’, ‘C’)
20
TOH( 3, ‘A’, ‘B’, ‘C’)
X
X
Move a disk from
A to C
21
TOH( 3, ‘A’, ‘B’, ‘C’)
22
TOH( 3, ‘A’, ‘B’, ‘C’)
23
TOH( 3, ‘A’, ‘B’, ‘C’)
24
TOH( 3, ‘A’, ‘B’, ‘C’)
25
TOH( 3, ‘A’, ‘B’, ‘C’)
26
TOH( 3, ‘A’, ‘B’, ‘C’)
27
TOH( 3, ‘A’, ‘B’, ‘C’)
28
TOH( 3, ‘A’, ‘B’, ‘C’)
29
TOH( 3, ‘A’, ‘B’, ‘C’)
X
30
TOH( 3, ‘A’, ‘B’, ‘C’)
X
Move a disk from 31
B to A
TOH( 3, ‘A’, ‘B’, ‘C’)