CISC220 Fall 2009 James Atlas Lecture 13: Trees. Skip Lists.
-
Upload
shanon-flynn -
Category
Documents
-
view
223 -
download
0
Transcript of CISC220 Fall 2009 James Atlas Lecture 13: Trees. Skip Lists.
CISC220Fall 2009
James Atlas
Lecture 13: Trees
Skip Lists
Project 1
• AI
• Graphics
• Networking
• Bio-informatics
• Natural Language Processing
Objectives for Today
• Understand Trees/Terminology
• Use basic traversals on trees
• Understand binary search trees
• Construct and use binary search trees
• Reading - K+W Chap 8
Trees
• Nonlinear data structure
Tree Terminology
• root, leaf
• parent, child, sibling
• subtree
• external, internal node
• ancestor, descendant
• depth, height
Binary Trees
• Each node has 0, 1, or 2 children
Binary Tree Application: Huffman Tree
Tree Traversal
• process of visiting each node
• 4 different standard traversals:– preorder– inorder– postorder– level-order (also called breadth-first)
• Interactive example:– http://nova.umuc.edu/~jarc/idsv/lesson1.html
Traversal Exercise
Find the:
• preorder
• inorder
• postorder
• level-order
Exercise Answers
• Preorder traversal sequence: F, B, A, D, C, E, G, I, H (root, left, right)
• Inorder traversal sequence: A, B, C, D, E, F, G, H, I (left, root, right)
• Postorder traversal sequence: A, C, E, D, B, H, I, G, F (left, right, root)
• Level-order traversal sequence: F, B, G, A, D, I, C, E, H
Binary Trees
• Each node has 0, 1, or 2 children
Binary Search Trees
Binary search trees– Elements in left subtree < element in subtree root
– Elements in right subtree > element in subtree root
– Both the left and right subtrees are binary search trees
Binary Search Tree (Example)
• Is this a binary search tree?
Binary Search Tree (Example)
Searching a BST
Search algorithm:1. if the tree is empty, return NULL
2. if target equals to root node, return that data
3. if target < root node, return search(left subtree)
4. otherwise return search(right subtree)
find(7)
find(12)
find(0)
find(14)
Inserting to a Binary Search Tree
if root is NULL
replace empty tree with new data leaf;
else if item < root->data
return insert(left subtree, item)
else
return insert(right subtree, item)• http://www.cs.jhu.edu/~goodrich/dsa/trees/btree.html
Inserting to a Binary Search Tree
Removing from a Binary Search Tree
• Item not present: do nothing• Item present in leaf: remove leaf (change to null)• Item in non-leaf with one child:
Replace current node with that child
• Item in non-leaf with two children?– Find largest item in the left subtree
– Recursively remove it
– Use it as the parent of the two subtrees
– (Could use smallest item in right subtree)
Removing from a Binary Search Tree
Order of operations?