COMP211slides 6
COMP211slides 6
T1
E.G.M. Petrakis
T0
T2
Trees
Tm
1
Definitions
Depth of tree node: length of the path
from the root to the node
the root has depth 0
E.G.M. Petrakis
Trees
A
B
root
leaf
sub-tree
root (tree) = A
descendents (B) = {F,G} sons (B)
ancestors (H) = {E} parent (H)
degree (tree) = 4: max number of sons
degree (E) = 3
level (H) = 2 level (A) = 0
depth (tree) = 3 max level
E.G.M. Petrakis
Trees
Binary Trees
0
left
right
Trees
d +1
2
=
2
1
j =0
E.G.M. Petrakis
Trees
E.G.M. Petrakis
Trees
preorder: ABDGCEHIF
inorder: DGBAHEICF
postorder: GDBHIEFCA
A
C
E
D
G
E.G.M. Petrakis
Trees
preorder: ABCEIFJDGHKL
inorder: EICFJBGDKHLA
postorder: IEJFCGKLHDBA
B
C
E
F
I
E.G.M. Petrakis
D
G
J
Trees
H
K
T1
preorder
T0 (root)
T1 preorder
T2 preorder
TM preorder
E.G.M. Petrakis
T2
inorder
T1 inorder
T0 (root)
T2 inorder
TM inorder
Trees
T
postorder
T1 postorder
T2 postorder
TM postorder
T0 (root)
9
A
B
C
F
E
H
preorder: ABCDHEFG
inorder:
CBHDEAGF
postorder: CHDEBGFA
E.G.M. Petrakis
Trees
10
} // interface BinNode
E.G.M. Petrakis
Trees
11
Trees
12
Trees
13
E.G.M. Petrakis
Trees
14
20
15
30
25
Each node stores key K
The nodes of Tleft have keys < K
The nodes of Tright have keys >= K
E.G.M. Petrakis
Trees
15
Search in BST
50
60
30
20
1.
2.
3.
4.
35
65
E.G.M. Petrakis
Trees
16
30
min 20
65 max
35
Trees
17
30
20
65
35
40
37
Trees
18
Shape of BST
10
Depends on insertion
order
For random insertion
sequence the BST is
more or less balanced
5
1
e.g., 10 20 5 7 1
7
10
e.g., 1 5 7 10 20
E.G.M. Petrakis
20
20
Trees
19
E.G.M. Petrakis
Trees
20
E.G.M. Petrakis
Trees
21
E.G.M. Petrakis
Trees
22
E.G.M. Petrakis
Trees
23
BST Sorting
Insert keys in BST
Insertion sequence:
50 30 60 20 35 40
37 65
Output keys inorder
Average case:
O(nlogn)
Worst case: O(n2)
E.G.M. Petrakis
Trees
50
60
30
20
65
35
40
37
24
Implementation of BSTs
Each node stores the key and pointers to
roots of Tleft, Tright
Array-based implementation:
known maximum number of nodes
fast
good for heaps
Trees
25
Trees
26
Elem Interface
Definition of an Object with support for a key field:
// Interface for generic
// element type
public abstract int key(); // Key used for search
// and ordering
} // interface Elem
interface Elem {
E.G.M. Petrakis
Trees
27
BST Class
class BST { // Binary Search Tree implementation
private BinNode root;
Trees
28
E.G.M. Petrakis
Trees
29
Trees
30
Trees
31
Trees
32
Array Implementation
E.G.M. Petrakis
Trees
33
A
B
C
D
E
F
G
0
1
1
2
2
2
3
C
F
Trees
34
A
B
C
D
E
F
G
2 3
4 5 6
7
C
F
Trees
35
B
C
D
E
F
G
2
4
7
3
5
C
F
Trees
36
r:
1
parent ( r ) = (r-1)/2
leftchild ( r ) = 2r+1
rightchild ( r ) = 2r+2
leftsibling ( r ) = r-1
rightsibling ( r ) = r+1
E.G.M. Petrakis
4
6
1 2 3 5
0
7
1
4
if
if
if
if
if
Trees
2
6
3
1
4
2
5
3
6
5
0< r <n
2r + 1 < n
2r + 2 < n
r even & 0 < r < n
r odd & 0 < r+1 < n
37
Heap
max element
Complete binary
tree (not BST)
Max heap: every
node has a value >=
children
Min heap: every
node has a value <=
children
E.G.M. Petrakis
7
6
4
min element
3
6
9
Trees
38
Heap Operations
insert new element in heap
build heap from n elements
delete max (min) element from heap
shift-down: move an element from the
root to a leaf
Array implementation of page 36
In the following assume max heap
E.G.M. Petrakis
Trees
39
Insertion
57
25
65
57
48
=>
65
48
65
25
new element
=> 57
48
25
Trees
40
Build Head
Insert n elements in an empty heap
complexity: O(nlogn)
H1
H2
Trees
41
Example
1 R
H1
5
4
H2
7
3
7
R
5
=>
4
1
2
6
H1
=>
3
6
2
H2
Trees
42
Complexity
Up to n/21 elements at d level => 0 moves/elem
Up to n/22 elements at d-1 level => 1 moves/elem
i
(i
1)n/2
(n)
i =1
E.G.M. Petrakis
Trees
43
Deletion
65
57
25
57
25
48
=>
57
=>
48
25
48
65
Complexity: O(logn)
E.G.M. Petrakis
Trees
44
Class Heap
public class Heap { //
private Elem[] Heap;
private int size;
private int n;
Heap class
// Pointer to the heap array
// Maximum size of the heap
// Number of elements now in the heap
Trees
45
E.G.M. Petrakis
Trees
46
E.G.M. Petrakis
Trees
47
E.G.M. Petrakis
Trees
48
E.G.M. Petrakis
Trees
49
E.G.M. Petrakis
Trees
50
E.G.M. Petrakis
Trees
51
Heap Sort
Insert all elements in new heap array
At step i delete max element
delete: put max element last in array
Trees
52
x[0]
92
x[1]
37
x[2]
x[4] x[5]
x[3]
33
86
86
12
48
57
37
x[6]
33
48
25
92
25 x[7]
57
(b) x[7] =
delete(92)
37
33
E.G.M. Petrakis
12
57
92
12
48
25
Trees
86
(c) x[6] =
delete(86)
53
37
48
37
33
12
33
25
57
12
86
48
25
57
86
92
92
E.G.M. Petrakis
Trees
54
33
12
37
48
() x[3] = delete(37)
25
57
86
92
12 x[1]
25
x[2]
12
37
92
48
33
57
86
E.G.M. Petrakis
x[4]
x[8]
Trees
37
25
48
33 x[3]
57
x[5] x[6]
92
86
x[7]
Huffman Coding
Goal: improvement in space
requirements in exchange of a penalty
in running time
Assigns codes to symbols
code: binary number
Trees
56
n i
i =1
E.G.M. Petrakis
Trees
57
Trees
58
E.G.M. Petrakis
Trees
59
Trees
60
Huffman Example
3
0
Weights: .12 .40 .15 .08 .25
Symbols: a b c
d
e
1
Weights: .20 .40
Symbols:
b
.15
c
Weights: .60
Symbols:
.25
e
Weights: .35
Symbols:
.40
b
4
Weights: 1.0
Symbols:
.25
e
uffman
Tree
e
d
E.G.M. Petrakis
.40
b
a
Trees
61
Huffman Encoding
0
b 0 1 uffman
0 1 Tree
e
1
c 0
d
a
=>
Huffman codes
a: 1111
b: 0
c:110
d:1110
e:10
Trees
62
Huffman Decoding
uffman
Tree
b
e
11111110100110
a
d
e b c
Trees
63
Critique
Advantages:
compression (40-80%)
cheaper transmission
some security (encryption)
locally optimal code
Disadvantages:
CPU cost
difficult error correction
we need the Huffman tree for the decoding
code not globally optimal
E.G.M. Petrakis
Trees
64