Loading...

PPT – Binary Search Trees vs. Binary Heaps PowerPoint presentation | free to download - id: 413543-ZWI1Z

The Adobe Flash plugin is needed to view this content

Binary Search Trees vs. Binary Heaps

Binary Search Tree Condition

- Given a node i
- i.value is the stored object
- i.left and i.right point to other nodes
- All of is left children and grand-children are

less than i.value - All of is right children and grand-children are

greater than i.value

Binary Search Trees

- Binary search trees can be easily implemented

using arrays.

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

X

50

24

78

12

36

64

90

3

15

29

44

58

67

81

93

50

24

78

12

36

64

90

3

15

29

44

58

67

81

93

Binary Search Trees

- Root is at index 1 (i 1)
- Left(i) return i2

- Right(i) return i2 1

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

X

50

24

78

12

36

64

90

3

15

29

44

58

67

81

93

50

24

78

12

36

64

90

3

15

29

44

58

67

81

93

Binary Search Trees

- bool Find_rec(int x, int i)
- if (ai -1 ) return false
- else if (x ai) return true
- else if (x lt ai) Find_rec(x, i2)
- else Find_rec(x, i21)

- bool Find(int x)
- return Find_rec(x, 1)

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

-1

50

24

78

12

36

64

90

3

15

29

44

-1

-1

-1

Binary Search Tree Features

- Find ? O(log N) on average
- Insert in proper order ? O(log N) on average
- O(log N) to find the correct location
- O(1) to perform insertion
- Return Min ? O(log N) on average
- Keep moving left until you see a -1
- Return Max ? O(log N) on average
- Keep moving left until you see a -1
- Print in-order ? O(N) all the time
- See in-order traversal in book

Priority Queue (Min)

- Three functions
- push(x) pushes the value x into the queue
- min() return the minimum value in the queue
- delete() removes the minimum value in the queue
- Tons of applications
- OS process queues, Transaction Processing, Packet

routing in advanced networks, used in various

other algoriothms

Priority Queue (Min)

- Consider using an un-order Array
- push(x) O(1) just add it to the end of the

array. - min() O(N) sequential search for min value
- delete() O(N) might have to shift entire array

Priority Queue (Min)

- Consider using an Ordered Array
- push(x) O(N) to find correct location and shift

array appropriately - min() O(1) return the first value
- delete() O(N) might have to shift entire array
- Recall using an un-order Array
- push(x) O(1) just add it to the end of the

array. - min() O(N) sequential search for min value
- delete() O(N) might have to shift entire array

Priority Queue (Min)

- Why are simple array implementation bad?
- O(N) is not a problem, right?
- Consider this application
- A private network router has 10 million packets

coming in every minute (mostly junk, spam, etc.)

and I only want to let through the top 1 million

(1 is top priority min)

Priority Queue (Min)

- N 10 million in-coming packets
- M 1 million out-going packets (top priority

priority 1) - Consider using an Ordered Array
- push(x) O(N) Must do this N times ? NN
- min() O(1)
- delete() O(1) Must do this M times ? M
- Recall using an un-order Array
- push(x) O(1) Must do this N time (not a

problem) - min() O(N) Must do this M times ? NM
- delete() O(N) Must do this M times ? NM

NM

- N all the packets 10 million
- M 1 million top priority packets
- Must be processed in one minute.
- Assume your computer can do 10 billion operation

per second ? 600 billion operation in one minute. - Unfortunately, NM is 10 trillion operations.

Priority Queue (Min)

- Consider using an BST
- push(x) O(log N) add to the correct position
- Log(n) n, n 10,000,000
- min() O(log N) return the left-most node
- delete() O(log N)
- Recall using an un-order Array
- push(x) O(1) just add it to the end of the

array. - min() O(N) sequential search for min value
- delete() O(N) might have to shift entire array

Priority Queue (Min)

- Is this possible?
- push(x) O(1) to find correct location an shift

array appropriately - min() O(1) return the first value
- delete() O(log N)

Binary Heaps (Min Heap)

- Given a node i
- i.value is the stored object
- i.left and i.right point to other nodes
- All of is left children and grand-children are

greater than i.value - All of is right children and grand-children are

greater than i.value

Binary Heaps (Min Heap)

- Binary heaps can be easily implemented using

arrays.

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

-1

3

10

5

16

33

48

49

24

81

63

78

58

67

-1

-1

3

10

5

16

33

48

49

24

81

63

78

58

67

Binary Heap Features

- Find ? O(N) requires sequential search
- Insert in proper order ? O(1) on average
- Amazing Heap Property
- Return Min ? O(log N) on average
- O(1) to return min
- O(log N) to restore the heap property
- Print in-order ? O(N log N) requires

progressively deleting the min.

Priority Queue (Min)

- N 10 million in-coming packets
- M 1 million out-going packets (top priority

priority 1) - Consider using an Heap
- push(x) O(1) Must do this N times (not a

problem) - min() O(1)
- delete() O(log N) Must do this M times ?

log(N)M - Recall using an un-order Array
- push(x) O(1) Must do this N time (not a

problem) - min() O(N) Must do this M times ? NM
- delete() O(N) Must do this M times ? NM

log(N)M

- N all the packets 10 million
- M 1 million top priority packets
- Must be processed in one minute.
- Assume your computer can do 1 billion operation

per second ? 60 billion operation in one minute. - What is log(N)M?

Summary Priority Queue Implementations

- BST Implementation
- Push O(log N)
- Find Min O(log N)
- Remove Min O(log N)
- Pushing N 10,000,000
- 230 million operations
- Removing M minimums
- M 1,000,000
- 20 million operations

- Binary Heap Implement.
- Push O(1)
- Find Min O(1)
- Remove Min O(log N)
- Pushing N 10,000,000
- 10 million operations
- Removing M minimums
- M 1,000,000
- 20 million operations