Lists and Trees (continued)

Download Report

Transcript Lists and Trees (continued)

Lists and Trees (continued)
CS-2301 System Programming
D-term 2009
(Slides include materials from The C Programming Language, 2nd edition, by Kernighan and Ritchie and
from C: How to Program, 5th and 6th editions, by Deitel and Deitel)
CS-2301 D-term 2009
Lists and Trees
(continued)
1
Definitions
• Linked List
• A data structure in which each element is
dynamically allocated and in which elements point
to each other to define a linear relationship
• Singly- or doubly-linked
• Stack, queue, circular list
• Tree
• A data structure in which each element is
dynamically allocated and in which each element
has more than one potential successor
• Defines a partial order
CS-2301 D-term 2009
Lists and Trees
(continued)
2
Definitions (continued)
• Binary Tree
• A tree in which each element has two potential
successors
• Subtree
• The set of nodes that are successors to a specific
node, either directly or indirectly
• Root of a tree
• The node of the tree that is not the successor to any
other node, all other nodes are (directly or
indirectly) successors to it
CS-2301 D-term 2009
Lists and Trees
(continued)
3
Binary Tree
• A linked list but with
two links per item
struct treeItem {
type payload;
treeItem *left;
treeItem *right;
};
payload
left
payload
left
payload
payload
left
left
right
payload
right
left
payload
left
right
right
right
CS-2301 D-term 2009
Lists and Trees
(continued)
4
right
payload
left
right
Binary Trees (continued)
• Two-dimensional data structure
• Easy to grow and shrink
• Easy to add and delete items at leaves
• More work needed to insert or delete branch nodes
• Search time is O(log n)
• If tree is reasonably balanced
• Degenerates to O(n) in worst case if unbalanced
CS-2301 D-term 2009
Lists and Trees
(continued)
5
Order of Traversing Binary Trees
• In-order
• Traverse left sub-tree (in-order)
• Visit node itself
• Traverse right sub-tree (in-order)
• Pre-order
• Visit node first
• Traverse left sub-tree
• Traverse right sub-tree
• Post-order
• Traverse left sub-tree
• Traverse right sub-tree
• Visit node last
CS-2301 D-term 2009
Lists and Trees
(continued)
6
Question
• Which order should Programming
Assignment #6 traverses its tree?
CS-2301 D-term 2009
Lists and Trees
(continued)
7
“Big O” notation
New Topic
CS-2301 D-term 2009
Lists and Trees
(continued)
8
Linked Lists Again
• Linear data structure
• Easy to grow and shrink
• Easy to add and delete items
• Time to search for an item – O(n)
CS-2301 D-term 2009
Lists and Trees
(continued)
9
Binary Trees Again
• Non-linear data structure
• Easy to grow and shrink
• Easy to add and delete items
• Time to search for an item – O(log n)
CS-2301 D-term 2009
Lists and Trees
(continued)
10
Definition — Big-O
“Of the order of …”
• A characterization of the number of
operations in an algorithm in terms of a
mathematical function of the number of
data items involved
• O(n) means that the number of operations to
complete the algorithm is proportional to n
• E.g., searching a list with n items requires,
on average, n/2 comparisons with payloads
CS-2301 D-term 2009
Lists and Trees
(continued)
11
Big-O (continued)
•
•
•
•
•
O(n): proportional to n – i.e., linear
O(n2): proportional to n2 – i.e., quadratic
O(kn) – proportional to kn – i.e., exponential
…
O(log n) – proportional to log n – i.e.,
sublinear
• O(n log n)
• Worse than O(n), better than O(n2)
• O(1) – independent of n; i.e., constant
CS-2301 D-term 2009
Lists and Trees
(continued)
12
Anecdote & Questions:–
• In the design of electronic adders, what is the
order of the carry-propagation?
• What is the order of floating point divide?
• What is the order of floating point square root?
• What program have we studied in this course that
is O(2n)? i.e., exponential?
CS-2301 D-term 2009
Lists and Trees
(continued)
13
Questions on Big-O?
CS-2301 D-term 2009
Lists and Trees
(continued)
14