
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.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages12 Page
-
File Size-