T REES • trees • binary trees • traversals of trees • template method pattern • data structures for trees Trees 1
Trees • a tree 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 node s , 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 H F G 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: • A binary tree is either - an external node (leaf), or - an internal node (the root ) and two binary trees ( left subtree and right subtree ) Trees 5
Examples of Binary Trees • arithmetic expression + × × 5 4 + + 7 2 × + 2 8 3 + 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) ≥ log 2 (# external nodes) • (height) ≥ log 2 (# 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 InspectableBinaryTree Sequence 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 grades homeworks/ programs/ projects/ 1K 1K 1K 8K 3K 82K 4787K hw1 hw2 hw3 pr1 pr2 pr3 papers/ demos/ 1K 1K 3K 2K 4K 57K 97K 74K 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 − 2 3 / + 4 5 6 7 + × × 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 × + 2 8 3 + 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 C B D G E F • binary tree T' representing T A B E C F D G Trees 18
Recommend
More recommend