CISC220 Fall 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 • external, internal node • parent, child, sibling • ancestor, descendant • subtree • 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. 2. 3. 4. 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 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?
© Copyright 2026 Paperzz