220 likes | 342 Vues
This lecture delves into tree data structures, including terminology and basic traversals such as preorder, inorder, postorder, and level-order (breadth-first). It explores binary trees, defining their properties and structures, including nodes, parents, and children. Students will learn about binary search trees, including insertion and removal operations, how to search within these trees, and the significance of left and right subtrees. The content includes interactive exercises and examples from K&W Chapter 8 for further understanding.
E N D
CISC220Fall 2009James Atlas Lecture 13: Trees
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
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?
Searching a BST Search algorithm: • if the tree is empty, return NULL • if target equals to root node, return that data • if target < root node, return search(left subtree) • 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
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)