Trees • Binary Trees • Traversals of Trees • Template Method Pattern • Data
Total Page:16
File Type:pdf, Size:1020Kb
TREES • trees • binary trees • traversals of trees • template method pattern • data structures for trees Trees 1 Trees •atree represents a hierarchy - organization structure of a corporation Electronics R’Us R&D Sales Purchasing Manufacturing Domestic International TV CD Tuner Canada S. America Overseas Africa Europe Asia Australia - table of contents of a book student guide overview grading environment programming support code exams homeworks programs Trees 2 Another Example • Unix or DOS/Windows file system /user/rt/courses/ cs016/ cs252/ grades grades homeworks/ programs/ projects/ hw1 hw2 hw3 pr1 pr2 pr3 papers/ demos/ buylow sellhigh market Trees 3 Terminology • A is the root node. • B is the parent of D and E. • C is the sibling of B • D and E are the children of B. • D, E, F, G, I are external nodes, or leaves. • A, B, C, H are internal nodes. • The depth (level) of E is 2 • The height of the tree is 3. • The degree of node B is 2. A B C D E F G H I Property: (# edges) = (#nodes) − 1 Trees 4 Binary Trees • Ordered tree: the children of each node are ordered. • Binary tree: ordered tree with all internal nodes of degree 2. • Recursive definition of binary tree: •Abinary tree is either -anexternal node (leaf), or -aninternal node (the root) and two binary trees (left subtree and right subtree) Trees 5 Examples of Binary Trees • arithmetic expression + × × + 5 4 + × + 7 2 3 + 2 8 1 + 4 6 ((((3 × (1 + (4 + 6))) + (2 + 8)) × 5) + ( 4 × (7 + 2))) •river Trees 6 Properties of Binary Trees •(# external nodes ) = (# internal nodes) + 1 •(# nodes at level i) ≤ 2 i •(# external nodes) ≤ 2 (height) ≥ •(height) log2 (# external nodes) ≥ − •(height) log2 (# nodes) 1 •(height) ≤ (# internal nodes) = ((# nodes) − 1)/2 Level 0 1 2 3 4 Trees 7 The Tree ADT • the nodes of a tree are viewed as positions • generic container methods - size(), isEmpty(), elements(), newContainer() • positional container methods - positions(), replace(p,e), swap(p,q) • query methods - isRoot(p), isInternal(p), isExternal(p) • accessor methods - root(), parent(p), children(p), siblings(p) • update methods (application specific) Container PositionalContainer PositionalSequence InspectableTree Sequence Trees 8 The Binary Tree ADT • extends the tree ADT • accessor methods - leftChild(p), rightChild(p), sibling(p) • update methods - expandExternal(p), removeAboveExternal(p) - other application specific methods • interface hierarchy of positional containers Container PositionalContainer PositionalSequence InspectableTree Sequence InspectableBinaryTree Trees 9 Traversing Trees • preorder traversal Algorithm preOrder(v) “visit” node v for each child w of v do recursively perform preOrder(w) • reading a document from beginning to end Paper Title Abstract § 1 § 2 § 3 References § 1.1 § 1.2 § 2.1 § 2.2 § 2.3 § 3.1 § 3.2 Trees 10 Traversing Trees • postorder traversal Algorithm postOrder(v) for each child w of v do recursively perform postOrder(w) “visit” node v • du (disk usage) command in Unix 5124K /user/rt/courses/ 1K 249K 4874K cs016/ cs252/ 2K 1K 10K 229K 4870K grades homeworks/ programs/ projects/ grades 8K 1K 1K 1K 3K 82K 4787K hw1 hw2 hw3 pr1 pr2 pr3 papers/ demos/ 3K 2K 4K 57K 97K 74K 1K 1K buylow sellhigh market 26K 55K 4786K Trees 11 Evaluating Arithmetic Expressions • specialization of a postorder traversal Algorithm evaluateExpression(v) if v is an external node return the variable stored at v else let o be the operator stored at v x ← evaluateExpression(leftChild(v)) y ← evaluateExpression(rightChild(v)) return x o y 1 − 23 / + 4567 × + × 6 8 9 10 11 12 13 + 3 − 2 3 − 16 17 20 21 26 27 3 1 9 5 7 4 Trees 12 Traversing Trees • inorder traversal of a binary tree Algorithm inOrder(v) recursively perform inOrder(leftChild(v)) “visit” node v recursively perform inOrder(rightChild(v)) • printing an arithmetic expression - specialization of an inorder traversal - print “(“ before traversing the left subtree - print “)” after traversing the right subtree + × × + 5 4 + × + 7 2 3 + 2 8 1 + 4 6 ((((3 × (1 + (4 + 6))) + (2 + 8)) × 5) + ( 4 × (7 + 2))) Trees 13 Euler Tour Traversal • generic traversal of a binary tree • the preorder, inorder, and postorder traversals are special cases of the Euler tour traversal • “walk around” the tree and visit each node three times: - on the left - from below - on the right − / + × + × 6 + 3 − 2 3 − 3 1 9 5 7 4 Trees 14 Template Method Pattern • generic computation mechanism that can be specialized by redefining certain steps • implemented by means of an abstract Java class with methods that can be redefined by it subclasses public abstract class BinaryTreeTraversal { protected BinaryTree tree; ... protected Object traverseNode(Position p) { TraversalResult r = initResult(); if (tree.isExternal(p)) { external(p, r); } else { left(p, r); r.leftResult = traverseNode(tree.leftChild(p)); below(p, r); r.rightResult = traverseNode(tree.rightChild(p)); right(p, r); } return result(r); } Trees 15 Specializing the Generic Binary Tree Traversal • printing an arithmetic expression public class PrintExpressionTraversal extends BinaryTreeTraversal { ... protected void external(Position p, TraversalResult r) { System.out.print(p.element()); } protected void left(Position p, TraversalResult r) { System.out.print("("); } protected void below(Position p, TraversalResult r) { System.out.print(p.element()); } protected void right(Position p, TraversalResult r) { System.out.print(")"); } } Trees 16 Linked Data Structure for Binary Trees ∅ root 5 size ∅ ∅ ∅ ∅ ∅ ∅ Baltimore Chicago New York Providence Seattle Trees 17 Representing General Trees • tree T A B C D E F G • binary tree T' representing T A B E C F D G Trees 18.