1 / 28

Trees

Trees. Definitions Read Weiss, 4.1 – 4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder , Postorder K- ary Trees Converting trees: k- ary ↔ binary. Definitions. Nodes Edges Root node Interior node Leaf Parent Children.

lotta
Télécharger la présentation

Trees

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 • Definitions • Read Weiss, 4.1 – 4.2 • Implementation • Nodes and Links • One Arrays • Three Arrays • Traversals • Preorder, Inorder, Postorder • K-ary Trees • Converting trees: k-ary↔ binary

  2. Definitions • Nodes • Edges • Root node • Interior node • Leaf • Parent • Children • Ancestor / Proper ancestor • Descendant / Proper descendant • Level of a node • Height of a node / tree • Degree of a node / tree • Depth of node • Path • Acyclic graph

  3. descendants of “a” a root, height=4, depth=level=0 degree=1 proper descendants of “a” j b k c interior node, height=2, depth=level=2 degree=2 g m d l i h f e degree=0 leaf, height=0, depth=level=4 degree of tree = 2 height of tree = 4

  4. Implementing a Tree • Nodes and Links Node { Object value; Node lchild; Node rchild; } // Node A B C ▲ ▲ ▲ D ▲=null link ▲ ▲

  5. Implementing a Tree A: 0 1 2 3 4 5 6 7 8 9 - A B C - - D - - - • One array • A[1] is root • lchild of A[i] is A[2i] • rchild of A[i] is A[2i+1] • “-” means array element • is null / not used • A[0] not used as a node • A[0] may be used to hold • general info (e.g., • number of nodes in tree) A B C ▲ ▲ ▲ D ▲=null link ▲ ▲

  6. Traversals • Preorder N L R preorder (Node t) if (t == null) return; visit (t.value()); preorder (t.lchild()); preorder (t.rchild()); } // preorder

  7. Traversals • Inorder • L N R inorder (Node t) if (t == null) return; inorder (t.lchild()); visit (t.value()); inorder (t.rchild()); } // inorder

  8. Traversals • Postorder • L R N postorder (Node t) if (t == null) return; postorder (t.lchild()); postorder (t.rchild()); visit (t.value()); } // postorder

  9. a j b k c g m d l i h f e preorder: a j k m l b c g i h d f e inorder: m k l j a b i g h c f d e postorder: m l k j i h g f e d c b a

  10. K-ary Trees a q c e f b d n m i p g k j degree of tree = 4 degree of nodes f and n = 3 height of tree = 3 depth=level of m = 2

  11. K-ary Tree => Binary Tree a q c e f b d n m i p K-ary Binary root root leftmost child left child right sibling right child g k j

  12. a q c e f a b d q c e f n m i p b d n m i p g k j g k j Traversals K-ary Tree Binary Tree Preorder: Inorder: Postorder: Preorder: Inorder: Postorder:

  13. Binary Search Trees

  14. BST Properties • Have all properties of binary tree • Items in left subtree are smaller than items in any node • Items in right subtree are larger than items in any node

  15. Items • Items must be comparable • All items have a unique value • Given two distinct items x and y either • value(x) < value(y) • value(x) > value(y) • If value(x) = value(y) then x = y • It will simplify programming to assume there are no duplicates in our set of items.

  16. Items • Need to map Items to a numerical value • Integers • Value(x) = x • People • Value(x) = ssn • Value(x) = student id

  17. BST Operations • Constructor • Insert • Find • Findmin • Findmax • Remove

  18. BST Operations • Generally Recursive BinaryNode operation( Comparable x, BinaryNode t ) { // End of path if( t == null ) return null; if( x.compareTo( t.element ) < 0 ) return operation( x, t.left ); else if( x.compareTo( t.element ) > 0 ) return operation( x, t.right ); else return t; // Match }

  19. BST Find Method private BinaryNode find( Comparable x, BinaryNode t ) { if( t == null ) return null; if( x.compareTo( t.element ) < 0 ) return find( x, t.left ); else if( x.compareTo( t.element ) > 0 ) return find( x, t.right ); else return t; // Match }

  20. BST Remove Operations • Remove • Node is leaf • Remove node • Node has one child • Replace node with child • Node has two children • Replace node with smallest child of right subtree.

  21. Remove method private BinaryNode remove( Comparable x, BinaryNode t ) { if( t == null ) return t; // Item not found; do nothing if( x.compareTo( t.element ) < 0 ) t.left = remove( x, t.left ); else if( x.compareTo( t.element ) > 0 ) t.right = remove( x, t.right ); else if( t.left != null && t.right != null ) // Two children { t.element = findMin( t.right ).element; t.right = remove( t.element, t.right ); } else t = ( t.left != null ) ? t.left : t.right; return t; }

  22. Internal Path Length • Review depth/height • Depth • Depth is number of path segments from root to node • Depth of node is distance from root to that node. • Depth is unique • Depth of root is 0

  23. Internal Path Length • Height • Height is maximum distance from node to a leaf. • There can be many paths from a node to a leaf. • The height of the tree is another way of saying height of the root.

  24. Internal Path Length • IPL is the sum of the depths of all the nodes in a tree • It gives a measure of how well balanced the tree is.

  25. Internal Path Length N = 4 IPL = 1 + 1 + 2 = 4 1 1 2

  26. Internal Path Length N = 4 IPL = 1 + 2 + 3 = 6 1 2 3

  27. 1 1 1 2 2 3 Average IPL for N nodesN = 4 • Calculate IPL of all possible trees 1 2 2

  28. Where do BST fit in • Simple to understand • Works for small datasets • Basis for more complicated trees • Using inheritance can implement • AVL trees • Splay trees • Red Black trees

More Related