1 / 19

Overview of Tree Concepts and Traversals in Data Structures

This chapter provides an overview of different tree concepts, including binary trees, binary search trees, AVL trees, splay trees, and B-trees. It also explains the common traversal orders for general trees and binary trees, along with implementation examples. The chapter concludes with a discussion on operations and deletion in binary search trees.

hectord
Télécharger la présentation

Overview of Tree Concepts and Traversals in Data Structures

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. DS.T.1 Trees Chapter 4 Overview • Tree Concepts • Traversals • Binary Trees • Binary Search Trees • AVL Trees • Splay Trees • B-Trees

  2. DS.T.2 Terminology Trees are hierarchic structures. • root • leaves • parent • children • ancestors • descendants • path • path length • depth / level • height • subtrees depth=0 height=0

  3. DS.T.3 Recursive Definition: A tree is a set of nodes that is a. empty or b. has one node called the root from which zero or more trees descend. General (n-ary) Arithmetic Expression Tree ( A + B + (( C * D * E ) / F ) + G ) - H How can we implement general trees with whose nodes can have variable numbers of children?

  4. DS.T.4 Common Traveral Orders for General Trees • Preorder • Postorder void print_preorder ( TreeNode T) { TreeNode P; if ( T == NULL ) return; else { print T-> Element; P = T -> FirstChild; while (P != NULL) { print_preorder ( P ); P = P -> NextSibling; } } }

  5. DS.T.5 A binary tree is a tree in which each node has two subtrees--left and right. Either or both may be empty. ( A + B + (( C * D * E ) / F ) + G ) - H What operations are required for a binary tree? That depends …

  6. DS.T.6 • Binary Arithmetic Expression Trees • Binary Decision Trees • Binary Search Trees • construct from infix expression • add or delete nodes • traverse in preorder to produce prefix expression • traverse in postorder to evaluate • traverse in inorder to output infix expression

  7. DS.T.7 Recursive Preorder Traversal void RPT (TreeNode T) { if (T != NULL) { “process” T -> Element; } Preorder Traversal with a Stack void SPT (TreeNode T, Stack S) { if (T == NULL) return; else push(T,S); while (!isempty(S)) { T = pop(S); “process” T -> Element; if (T -> Right != NULL) push(T -> Right, S); if (T -> Left != NULL) push(T -> Left, S); } }

  8. DS.T.8 Binary Search Trees Search trees are look-up tables that are used to find a given key value and return associated data. Example: look up SSN, return name and address. A binary tree satisfies the ordering property if the key value in any given node is > all key values in the node’s left subtree  all key values in the node’s right subtree 10 6 19 2 7

  9. DS.T.9 Operations • Find the node with a given key • FindMin / FindMax key in the tree • Insert a new key(and associated data) • Delete a key(and associated data) Find, FindMin, FindMax, Insert are easy. Delete is a little bit tricky.

  10. DS.T.10 Deletion of a Node from a Binary Search Tree 1. Find the node with the given key value. 2. Delete that node from the tree. Problem: When you delete a node, what do you replace it by? • If it has no children, by NULL. • If it has one child, by that child. • If it has two children, by the node with the smallest key in its right subtree.

  11. DS.T.11 Delete node with key 95. T 1000 95 2000 300 60 120 180

  12. DS.T.12 Find the node. 1000 T 95 2000 300 It has 2 children. 60 120 180

  13. DS.T.13 Find smallest in its right subtree. 1000 T 95 2000 300 60 TmpCell 120 180

  14. DS.T.14 Replace T’s key value with that of TmpCell. 1000 T 120 2000 Now delete 120 from this subtree. 300 60 TmpCell 120 180

  15. DS.T.15 Delete 120 from this subtree T. 1000 120 2000 T 300 60 120 180

  16. DS.T.16 Find the 120 again. 1000 120 2000 300 60 TmpCell T It has only one child. Replace it by this child. 120 180

  17. DS.T.17 1000 120 2000 300 60 TmpCell T It has only one child. Replace it by this child and free TmpCell. 120 180

  18. DS.T.18 1000 120 2000 300 60 180

  19. DS.T.19 What do you think of this delete procedure? Is it readable? Is it efficient? How would YOU do it?

More Related