trees
play

Trees Weiss sec. 7.3.5 (preview) ch. 18 (sort of) Data Structures - PowerPoint PPT Presentation

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


  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 5 5 – each cell has 0 or more 4 2 4 2 successors (children) – one cell is called the root 7 8 – each cell has 1 predecessor 7 8 9 (parent), except the root which Binary tree has no parent General tree • Recursive description: – a tree can be empty 5 5 – a tree can be a cell with 0 or more non-empty trees as 4 6 children • Binary tree: 7 8 8 – a tree where each cell has at Not a tree List-like tree most 2 children

  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 R • leaf node has no descendants Root of tree 5 • depth of node is length of path Right sub-tree of root Left sub-tree of root from root to the node – depth(A) = 1 A 4 2 D – depth(B) = 2 • height of node : length of longest B C path from node to leaf 7 8 – height(A) = 1 – height(B) = 0 Binary tree • height of tree = height of root – in example, height of tree = 2

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

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

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

  8. General Trees: GTreeCell • Second approach: linked list of children public class 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 public class 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 7 8 9 1 8 3 7 1 7 8 3 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 7 8 9 1 8 3 7 1 7 8 3 Tree represented using GTreeCell General tree

  11. Applications • Trees can represent structure of a language as an abstract syntax tree (AST) Text Tree representation • Example grammar: -34 -34 E : (E + E) E : integer | variable + (x + 3) • What can we do with AST? x 3 – integration, differentiation, etc. – constant-expression elimination ((2+y) + (5+7)) – re-arrange expressions + + + 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: static boolean search(TreeCell t, Object o); • Recursive version is trivial; Try the iterative version at home… public static boolean search(TreeCell t, Object o) { ((2+y) + (5+7)) if (t == null) return false; else return t.getElt().equals(o) | | + search(t.getLeft(), o) | | search(t.getRight(), o); } + + 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-order walk: 2 y 5 7 root, left, right • in-order walk: left, root, right • post-order walk: left, right, root

  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

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend