trees
play

Trees Chapter 4 1 Objectives Understand the terminology of the - PowerPoint PPT Presentation

Trees Chapter 4 1 Objectives Understand the terminology of the tree data structure Represent a tree structure in a program Understand the importance of the binary trees Use a binary search tree for storing ordered elements 2 Motivation


  1. Trees Chapter 4 1

  2. Objectives Understand the terminology of the tree data structure Represent a tree structure in a program Understand the importance of the binary trees Use a binary search tree for storing ordered elements 2

  3. Motivation Why lists, stacks, and queues are not enough? Not everything can be linearized. We may need to represent hierarchies, for example. Sorted array search: O(log(n)) Sorted array insert: O(n) Linked list search: O(n) Linked list insert: O(1) Can we build a data structure that is fast for both search and insert? 3

  4. Hierarchical Structures UC System … UCR UCI UCSD … BCOE CNAS CSE ECE 4

  5. Hierarchical Structures US … CA AZ MN San Riverside … Bernardino County County Palm Riverside Springs 5

  6. Definition A tree can be defined recursively A tree is a group of nodes Each node contains a value If the tree is not empty, one node is identified as the root node The root node has zero or more subtrees The root of a subtree is connected to the root of the tree 6

  7. Terminology: Basic Definitions Root A is the parent of D A D is the child of A B, C, and D B C D are siblings E and F are E not siblings F G H I J K Subtrees 7

  8. Terminology: Descendants A B C D E F G H I J K Descendants of A 8

  9. Terminology: Ancestors A Ancestors of E B C D E F G H I J K Descendant of E 9

  10. Terminology: Leaves Internal nodes A B C D E F G H I J K Leaf nodes (Leaves) 10

  11. Terminology: Levels, Depth What is the height of Level 0 A the tree? B C D Level 1 Level 2 E F G H I J J is at level 3 K The depth of J is 3 Level 3 What is the relationship between the depth of a node and the number of ancestors? 11

  12. Terminology: Path A Is there a path from B to C? B C D E F G H I J K The path from A to J is (A, B, E, J) What is the path from D The length of the path is three (edges) to K? 12

  13. Tree Representation Node Value (any type) Children * * * * * template < type T> class Tree { class Node { T value; list<Node*> children; }; Node* root; }; 13

  14. Parent Representation A B C D E F G H template < type T> class Tree { class Node { I J K T value; Node* parent; }; list<Node*> nodes; }; 14

  15. Left-child Right-sibling A B C D E F G H I J K 15

  16. Left-child Right-sibling A B C D E F G H template < type T> class Tree { class Node { I J K T value; Node* left_child; Node* right_sibling; }; Node* root; }; 16

  17. Binary Trees A special case where every node has at most two children Has many applications that make it particularly interesting More restricted  Room for optimization template < type T> class Tree { class Node { T value; Node* left; Node* right; }; Node* root; }; 17

  18. Application: Expression Tree 3 × 5 + 4/2 × 2 ⨉ + 2 ⨉ / 2 3 5 4 18

  19. Inorder Tree Traversal (3 × 5) + (4/2 ) × 2 ⨉ + 2 ⨉ / 2 3 5 4 19

  20. Postorder Tree Traversal 35 × 42/+2 × ⨉ + 2 ⨉ / 2 3 5 4 20

  21. Preorder Tree Traversal ×+× 35/422 ⨉ + 2 ⨉ / 2 3 5 4 21

  22. Implementation of Traversals inorder(Node* root) { postorder(Node* root) { if (root == null) if (root == null) return; return; inorder(root->left); postorder(root->left); print(root->value); postorder(root->right); inorder(root->right); print(root->value); } } preorder(Node* root) { if (root == null) return; print(root->value); preorder(root->left); preorder(root->right); } 22

Recommend


More recommend