Trees a unique path from root to every element root (no parent) A - - PowerPoint PPT Presentation

trees
SMART_READER_LITE
LIVE PREVIEW

Trees a unique path from root to every element root (no parent) A - - PowerPoint PPT Presentation

Trees a unique path from root to every element root (no parent) A edge node B C D E height F G H I J K L length of longest path from root to leaf M N O P Q R S T U leaves (no children) Which of these are (not)


slide-1
SLIDE 1
slide-2
SLIDE 2

a unique path from root to every element

Trees

J I Q P O N M T L K D H F S R B G E C A U

root

(no parent)

height

length of longest path
 from root to leaf

leaves

(no children)

node edge

slide-3
SLIDE 3

Which of these are (not) trees? (And why?)

B C F D E A B C F D E A B C F D E A B C F D E A B C F D E A B C F D E A

✔ ✔ ✔ ✘ ✘ ✘

a b c f e d

slide-4
SLIDE 4

Ancestors

slide-5
SLIDE 5

Descendants

subtree

slide-6
SLIDE 6

Depth

slide-7
SLIDE 7

Height

slide-8
SLIDE 8

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

Tree height

19 10 29 3 19 10 29 19 10 29 19

h = 2 h = 1 h = 1 h = 0 h = -1 (!)

The height of an empty tree is -1.

slide-9
SLIDE 9

3 10 29 39 42 72 56 63 19 51 37 structure constraint: every node has at most two children

Binary trees

slide-10
SLIDE 10

3 10 29 39 42 72 56 63 19 51 37 Visit the root, then preorder traverse the left subtree, then preorder traverse the right subtree

Preorder traversal

4 3 2 5 1 6 7 8 10 11 9

slide-11
SLIDE 11

3 10 29 39 42 72 56 63 19 51 37 Inorder traverse the left subtree, then visit the root, then inorder traverse the right subtree

Inorder traversal

1 2 3 4 5 8 7 6 9 11 10

slide-12
SLIDE 12

3 10 29 39 42 72 56 63 19 51 37 Postorder traverse the left subtree, then postorder traverse the right subtree, then visit the root

Postorder traversal

1 2 4 3 11 10 6 5 7 8 9

slide-13
SLIDE 13

3 10 29 39 42 72 56 63 19 51 37

  • rder constraint: every parent is greater than all the nodes in its left subtree and 


less than all the nodes in the right

Binary search trees (BSTs)

(unique) key

the value used for search

slide-14
SLIDE 14

3 10 29 39 42 72 56 63 19 51 37 structure constraint: every subtree is about the same size as its sibling

Balanced binary search trees

slide-15
SLIDE 15

Perfect trees

  • Most trees aren’t perfect (why not?)
  • But perfect trees are useful for analyzing balanced trees.

structure: all leaves are at the same level and every level is full

slide-16
SLIDE 16

BST algorithm: fjnd

37 19 51 10 29 42 63 3 39 56 72

slide-17
SLIDE 17

BST algorithm: fjnd

Given a BST values and a number i:

find(i, values): If the tree is empty, return false. Let key be the value at the root of the tree. If key is i, return true. If i < key, call find on the lefu subtree. If i > key, call find on the right subtree.

slide-18
SLIDE 18

BST algorithm: insert

Given a BST values and a number i:

insert(i, values): Look for i in values. Insert i as a leaf where it should be.

37 19 51 63 56 72 37 19 51 29 63 56 72 37 19 51 29 63 26 56 72

insert 29 insert 26 we’ll assume that i 
 is not in the tree

slide-19
SLIDE 19

qph.fs.quoracdn.net/main-qimg-88aaea5bcbfbdb3215063dfd7d4c113c

slide-20
SLIDE 20

Designing and implementing a new data structure

Interface and implementation

  • Interface

Answers: what can this data structure do

  • Implementation: encoding

Answers: how the structure is stored, using existing data structures

  • Implementation: operations

Answers: how the structure provides its interface via 
 algorithms over the encoding

It should be possible to replace the implementation 
 without modifying the interface.

We’ll talk only about the interface for trees


(but you have access to the code for the implementation).

slide-21
SLIDE 21

Inductive data structure, manipulated via constructors, accessors, and operations

Our Racket trees: Interface

constructors


put together

empty-tree (make-leaf <key>) (make-tree <key> <left> <right>)

accessors


take apart

(empty-tree? <tree>) (leaf? <tree>) (root <tree>) (left <tree>) (right <tree>)

  • perations

  • fuen recursive

(size <tree>) (height <tree>) (find <value> <tree>) (insert <value> <tree>)

(traverse-inorder <tree>)
 (traverse-preorder <tree>)
 (traverse-postorder <tree>)

Our BSTs won’t be balanced.

slide-22
SLIDE 22

What are some good test cases for trees?

ε

k TL k k TR TL k TR

slide-23
SLIDE 23

Firstname Lastname

size

  • Th. 10 / 18

(Your response)

; the number of nodes in the tree

(define (size tree)

slide-24
SLIDE 24

Firstname Lastname

; the number of nodes in the tree

(define (size tree) (if (empty-tree? tree) (+ 1 (size (left tree)) (size (right tree)))))

size

  • Th. 10 / 18
slide-25
SLIDE 25

Worst-case analysis

How bad can it get?

Given a collection of size N and an operation:

What’s the worst input for the operation? How expensive is the operation, for that input? (cost = # of elements visited)

find insert min list elements 
 in order

List

O(n log n)

elements visited

Tree

O(n log n)

elements visited

Binary search tree (BST)

O(n)


elements visited

balanced Binary search tree (BST)

O(n)


elements visited

For trees (including unbalanced BSTs), the worst-case version of an N-element tree is a “stick” (i.e., a linked list).

slide-26
SLIDE 26

Worst-case analysis

How bad can it get?

Given a collection of size N and an operation:

What’s the worst input for the operation? How expensive is the operation, for that input? (cost = # of elements visited)

find insert min list elements 
 in order

List

O(n)


elements visited

O(1)

elements visited

O(n)


elements visited

O(n log n)

elements visited

Tree

O(n)


elements visited

O(1)

elements visited

O(n)


elements visited

O(n log n)

elements visited

Binary search tree (BST)

O(n)


elements visited

O(n)

elements visited

O(n)


elements visited

O(n)


elements visited

balanced Binary search tree (BST)

O(log n)


elements visited

O(log n)


elements visited

O(log n)


elements visited

O(n)


elements visited

For trees (including unbalanced BSTs), the worst-case version of an N-element tree is a “stick” (i.e., a linked list).

slide-27
SLIDE 27
  • 1. Translate the base case(s), using specific input sizes

How many steps does this base case take?

  • 2. Translate the recursive case(s), using input size N

Define T(N) recursively, in terms of smaller cost.

Analyze size, using a recurrence relation

T(N) = 1 + T(N-1) + 0 T(N) = 1 + 1 + T(N-2) T(N) = 1 + 1 + 1 + T(N-3) T(N) … T(N) = 1 + 1 + 1 + … 1 + T(N-N) = 1*1 + T(N-1) = 2*1 + T(N-2) = 3*1 + T(N-3) … = N*1 + T(N-N) = N ∈ O(N)

(define (size tree) (if (empty-tree? tree) (+ 1 (size (left tree)) (size (right tree)))))

T(0) = 0 T(N) = 1 + T(N-1) + 0

For a given cost metric: additions; on the worst-case input: a stick