1 / 15

Trees Weiss sec. 7.3.5 (preview) ch. 18 (sort of)

Trees Weiss sec. 7.3.5 (preview) ch. 18 (sort of). Data Structures So Far. Arrays random access, fixed size, hard to insert/delete java.util.ArrayList random access, dynamic resize, hard to insert/delete Linked Lists sequential access, dynamic resize, easy to insert/delete Something new:

Download Presentation

Trees Weiss sec. 7.3.5 (preview) ch. 18 (sort of)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Trees Weiss sec. 7.3.5 (preview)ch. 18 (sort of)

  2. Data Structures So Far • Arrays • random access, fixed size, hard to insert/delete • java.util.ArrayList • random access, dynamic resize, hard to insert/delete • Linked Lists • sequential access, dynamic resize, easy to insert/delete • Something new: • semi-random access, dynamic resize, semi-easy to insert/delete

  3. Trees • Iterative description: • a set of cells • each cell has 0 or more successors (children) • one cell is called the root • each cell has 1 predecessor (parent), except the root which has no parent • Recursive description: • a tree can be empty • a tree can be a cell with 0 or more non-empty trees as children • Binary tree: • a tree where each cell has at most 2 children 5 5 4 2 4 2 8 7 8 9 7 Binary tree General tree 5 5 4 6 7 8 8 Not a tree List-like tree

  4. Terminology • edge AB • A is parent of B • B is child of A • path R  A  B • R and A are ancestors of B • A and B are descendants of R • leaf node has no descendants • depth of node is length of path from root to the node • depth(A) = 1 • depth(B) = 2 • height of node: length of longest path from node to leaf • height(A) = 1 • height(B) = 0 • height of tree = height of root • in example, height of tree = 2 R Root of tree 5 Right sub-tree of root Left sub-tree of root A 4 2 D B C 8 7 Binary tree

  5. Binary Tree Trivia • At most 2d cells at depth d • In tree of height h: • at least h+1 elements • at most 2h+1 – 1 elements depth 0 5 1 4 2 2 8 4 7 0 Height 2, maximum number of nodes 5 2 4 Height 2, minimum number of nodes

  6. Code publicclass TreeCell {private Object elt;private TreeCell left;private TreeCell right;// Construct a tree with only a single cellpublic TreeCell(Object elt) {this(elt, null, null); // defer to three-argument constructor  }// Construct a tree with childrenpublic TreeCell (Object elt, TreeCell left, TreeCell right) {this.elt = elt;this.left = left;this.right = right;  } /* getters and setters: getElt, getLeft, getRight, setElt, … */ } TreeCell elt 5 left right

  7. General Trees: GTreeCell • One approach: array of children publicclass GTreeCell {protected Object elt;protected GTreeCell [ ] children;  … }

  8. General Trees: GTreeCell • Second approach: linked list of children publicclass GTreeCell {protected Object elt;protected ListCell children;  … }

  9. General Trees: GTreeCell • Third approach: TreeCell doubles as a ListCell • Store the next pointer from ListCell in the TreeCell object • Each cell maintains link to left child and right sibling publicclass GTreeCell {protected Object elt;protected GTreeCell left;protected GTreeCell sibling; // essentially ListCell.next Q: How to enumerate children? 5 5 4 2 4 2 8 9 7 8 9 7 1 8 3 7 1 8 3 7 Tree represented using GTreeCell General tree

  10. General Trees: GTreeCell • Last approach: Circular sibling list • Let the sibling list “wrap around” • Helps with some operations 5 5 4 2 4 2 8 9 7 8 9 7 1 8 3 7 1 8 3 7 Tree represented using GTreeCell General tree

  11. Applications • Trees can represent structure of a language as an abstract syntax tree (AST) • Example grammar: E : (E + E) E : integer | variable • What can we do with AST? • integration, differentiation, etc. • constant-expressionelimination • re-arrange expressions Text Tree representation -34 -34 + (x + 3) x 3 ((2+y) + (5+7)) + + + 2 y 5 7

  12. Recursion on Trees • Similar to recursion on lists or integers • Base case: empty tree (or one-cell tree) • Recursive case: • solve for subtrees • combine these solutions to get solution for whole tree

  13. Search: Recursive • Find out if object o is in the tree:staticboolean search(TreeCell t, Object o); • Recursive version is trivial; Try the iterative version at home… publicstaticboolean search(TreeCell t, Object o) {if (t == null) return false;elsereturn t.getElt().equals(o) | |  search(t.getLeft(), o) | |  search(t.getRight(), o);  } ((2+y) + (5+7)) + + + 2 y 5 7

  14. Traversal Ordering • search( ) traverses tree in following recursive order: • first process root node • then process left subtree • then process right subtree • pre-orderwalk:root, left, right • in-order walk:left, root, right • post-order walk:left, right, root + + + 2 y 5 7

  15. Variations • Write a header class called Tree • tree methods can be instance & static methods of Tree • Maintain reference to parent in each cell • analagous to doubly-linked list

More Related