Trees Vs. Linked Lists

Trees Vs. Linked Lists

Trees vs. Linked Lists ■ Linked list is collection of nodes where each node references only one neighbor. ■ Tree is also collection of nodes, but each node may reference multiple neighbors. ■ Tree can be used to model hierarchical organization of data. 1 Trees ■ A (rooted) tree T is a collection of nodes connected by edges such that: ■ there is a designated root node ■ the nodes connected by edges to the root are themselves roots of disjoint trees, called subtrees of T 2 Examples of Trees ■ organization chart C E O accounts sales personnel purchasing Boston St Louis training recruiting ■ table of contents student guide overview grading environment programming support code exams homeworks programs ■ other ... 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. • (C,F) is an edge • D, E, F, G, I are external nodes, or leaves (i.e., nodes with no children). • 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 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) 5 Properties of Binary Trees •(# external nodes ) = (# internal nodes) + 1 •(# nodes at level i) ≤ 2 i •(# external nodes) ≤ 2 (height) ≥ •(height) log2 (# external nodes) Level 0 1 2 3 4 6 Traversing Binary Trees Preorder Traversal: 1. visit root 2. traverse left subtree 3. traverse right subtree F D J B EH N AC GILO KM F D B A C E J ... H G I N L K M O 7 Printing Arithmetic Expressions + × × + 5 4 + × + 7 2 3 + 2 8 1 + 4 6 ((((3 × (1 + (4 + 6))) + (2 + 8)) × 5) + ( 4 × (7 + 2))) ■ method void print() ■ for a leaf, print() writes its value ■ for an internal node, print() does: write “(“; left_.print(); write operator symbol (“+” or “×”) right_.print(); write “)” ■ Inorder Traversal! 8 Traversing Binary Trees Postorder Traversal: 1. traverse left subtree 2. traverse right subtree 3. visit root F D J B EH N AC GILO KM A C B E D G ... I H K M L O N J F 9 Evaluating Arithmetic Expressions + × × + 5 4 + × + 7 2 3 + 2 8 1 + 4 6 ((((3 × (1 + (4 + 6))) + (2 + 8)) × 5) + ( 4 × (7 + 2))) ■ method eval() ■ for a leaf, eval() returns its value ■ for an internal node, eval() returns: left_.eval() + right_.eval() or left_.eval() × right_.eval() depending on the operator stored at the node ■ Postorder Traversal! 10 Traversing Binary Trees Inorder Traversal: 1. traverse left subtree 2. visit root 3. traverse right subtree F D J B EH N AC GILO KM A B C D E F ... G H I J K L M N O 11 Drawing Binary Trees • y(v) = (depth of v) • x(v) = (inorder rank of v) 0 1 2 3 4 1 2 3 4 5 6 7 8 9 10 11 12 13 method int layout(int depth, int rank) ■ for leaf node: y_ = depth; x_ = rank; return rank+1; ■ for internal node: y_ = depth; x_ = left_.layout(depth + 1, rank); rank = x_+1; return right_.layout(depth + 1, rank); ■ Inorder traversal for x-coordinates! 12.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    12 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us