c programming program design including data structures fourth edition
Download
Skip this Video
Download Presentation
C++ Programming: Program Design Including Data Structures, Fourth Edition

Loading in 2 Seconds...

play fullscreen
1 / 62

C++ Programming: Program Design Including Data Structures, Fourth Edition - PowerPoint PPT Presentation


  • 127 Views
  • Uploaded on

C++ Programming: Program Design Including Data Structures, Fourth Edition. Chapter 20: Binary Trees. Objectives. In this chapter, you will: Learn about binary trees Explore various binary tree traversal algorithms Learn how to organize data in a binary search tree

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' C++ Programming: Program Design Including Data Structures, Fourth Edition' - aric


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
c programming program design including data structures fourth edition

C++ Programming: Program Design Including Data Structures, Fourth Edition

Chapter 20: Binary Trees

objectives
Objectives

In this chapter, you will:

  • Learn about binary trees
  • Explore various binary tree traversal algorithms
  • Learn how to organize data in a binary search tree
  • Learn how to insert and delete items in a binary search tree
  • Explore nonrecursive binary tree traversal algorithms

C++ Programming: Program Design Including Data Structures, Fourth Edition

binary trees
Binary Trees

C++ Programming: Program Design Including Data Structures, Fourth Edition

binary trees continued
Binary Trees (continued)

Root node, and

Parent of B and C

Left child of A

Right child of A

Directed edge,

directed branch, or

branch

Node

Empty subtree

(F’s right subtree)

C++ Programming: Program Design Including Data Structures, Fourth Edition

binary trees continued1
Binary Trees (continued)
  • Every node has at most two children
  • A node:
    • Stores its own information
    • Keeps track of its left subtree and right subtree
      • lLink and rLink pointers

C++ Programming: Program Design Including Data Structures, Fourth Edition

binary trees continued2
Binary Trees (continued)
  • A pointer to the root node of the binary tree is stored outside the tree in a pointer variable

C++ Programming: Program Design Including Data Structures, Fourth Edition

binary trees continued3
Binary Trees (continued)
  • Leaf: node that has no left and right children
  • U is parent of V if there’s a branch from U to V
  • There’s a unique path from root to every node
  • Length of a path: number of branches on path
  • Level of a node: number of branches on the path from the root to the node
    • The level of the root node of a binary tree is 0
  • Height of a binary tree: number of nodes on the longest path from the root to a leaf

C++ Programming: Program Design Including Data Structures, Fourth Edition

slide12

A is the parent of B and C

ABDG is a path (of length 3) from node A to node G

A leaf

  • The longest path from root to a leaf is ABDGI
  • The number of nodes on this path is 5  the height of the tree is 5
binary trees continued4
Binary Trees (continued)
  • How can we calculate the height of a binary tree?
  • This is a recursive algorithm:

C++ Programming: Program Design Including Data Structures, Fourth Edition

copy tree
Copy Tree

C++ Programming: Program Design Including Data Structures, Fourth Edition

binary tree traversal
Binary Tree Traversal
  • Inorder traversal
    • Traverse the left subtree
    • Visit the node
    • Traverse the right subtree
  • Preorder traversal
    • Visit the node
    • Traverse the left subtree
    • Traverse the right subtree

C++ Programming: Program Design Including Data Structures, Fourth Edition

binary tree traversal continued
Binary Tree Traversal (continued)
  • Postorder traversal
    • Traverse the left subtree
    • Traverse the right subtree
    • Visit the node

C++ Programming: Program Design Including Data Structures, Fourth Edition

binary tree traversal continued1
Binary Tree Traversal (continued)
  • Inorder sequence: listing of the nodes produced by the inorder traversal of the tree
  • Preorder sequence: listing of the nodes produced by the preorder traversal of the tree
  • Postorder sequence: listing of the nodes produced by the postorder traversal of the tree

C++ Programming: Program Design Including Data Structures, Fourth Edition

binary tree traversal continued2
Binary Tree Traversal (continued)
  • Inorder sequence: B D A C
  • Preorder sequence: A B D C
  • Postorder sequence: D B C A

C++ Programming: Program Design Including Data Structures, Fourth Edition

implementing binary trees
Implementing Binary Trees
  • Typical operations:
    • Determine whether the binary tree is empty
    • Search the binary tree for a particular item
    • Insert an item in the binary tree
    • Delete an item from the binary tree
    • Find the height of the binary tree
    • Find the number of nodes in the binary tree
    • Find the number of leaves in the binary tree
    • Traverse the binary tree
    • Copy the binary tree

C++ Programming: Program Design Including Data Structures, Fourth Edition

binary search trees
Binary Search Trees
  • We can traverse the tree to determine whether 53 is in the binary tree  this is slow

C++ Programming: Program Design Including Data Structures, Fourth Edition

binary search trees continued
Binary Search Trees (continued)

C++ Programming: Program Design Including Data Structures, Fourth Edition

binary search trees continued1
Binary Search Trees (continued)
  • Every binary search tree is a binary tree

C++ Programming: Program Design Including Data Structures, Fourth Edition

binary search trees continued2
Binary Search Trees (continued)

C++ Programming: Program Design Including Data Structures, Fourth Edition

search
Search

C++ Programming: Program Design Including Data Structures, Fourth Edition

insert
Insert

C++ Programming: Program Design Including Data Structures, Fourth Edition

insert continued
Insert (continued)

C++ Programming: Program Design Including Data Structures, Fourth Edition

delete
Delete

C++ Programming: Program Design Including Data Structures, Fourth Edition

delete continued
Delete (continued)
  • The delete operation has four cases:
    • The node to be deleted is a leaf
    • The node to be deleted has no left subtree
    • The node to be deleted has no right subtree
    • The node to be deleted has nonempty left and right subtrees

C++ Programming: Program Design Including Data Structures, Fourth Edition

delete continued1
Delete (continued)
  • To delete an item from the binary search tree, we must do the following:
    • Find the node containing the item (if any) to be deleted
    • Delete the node

C++ Programming: Program Design Including Data Structures, Fourth Edition

binary search tree analysis
Binary Search Tree: Analysis
  • Let T be a binary search tree with n nodes, where n > 0
  • Suppose that we want to determine whether an item, x, is in T
  • The performance of the search algorithm depends on the shape of T
  • In the worst case, T is linear

C++ Programming: Program Design Including Data Structures, Fourth Edition

binary search tree analysis continued
Binary Search Tree: Analysis (continued)
  • Worst case behavior: T is linear
    • O(n) key comparisons

C++ Programming: Program Design Including Data Structures, Fourth Edition

binary search tree analysis continued1
Binary Search Tree: Analysis (continued)
  • Average-case behavior:
    • There are n! possible orderings of the keys
      • We assume that orderings are possible
    • S(n) and U(n): number of comparisons in average successful and unsuccessful case, respectively

C++ Programming: Program Design Including Data Structures, Fourth Edition

binary search tree analysis continued2
Binary Search Tree: Analysis (continued)

C++ Programming: Program Design Including Data Structures, Fourth Edition

nonrecursive binary tree traversal algorithms
Nonrecursive Binary Tree Traversal Algorithms
  • The traversal algorithms discussed earlier are recursive
  • This section discusses the nonrecursive inorder, preorder, and postorder traversal algorithms

C++ Programming: Program Design Including Data Structures, Fourth Edition

nonrecursive inorder traversal

Will be visited first

Nonrecursive Inorder Traversal
  • For each node, the left subtree is visited first, then the node, and then the right subtree

C++ Programming: Program Design Including Data Structures, Fourth Edition

nonrecursive preorder traversal
Nonrecursive Preorder Traversal
  • For each node, first the node is visited, then the left subtree, and then the right subtree

C++ Programming: Program Design Including Data Structures, Fourth Edition

nonrecursive postorder traversal
Nonrecursive Postorder Traversal
  • Visit order: left subtree, right subtree, node
  • We must indicate to the node whether the left and right subtrees have been visited
    • Solution: other than saving a pointer to the node, save an integer value of 1 before moving to the left subtree and value of 2 before moving to the right subtree
    • When the stack is popped, the integer value associated with that pointer is popped as well

C++ Programming: Program Design Including Data Structures, Fourth Edition

binary tree traversal and functions as parameters
Binary Tree Traversal and Functions as Parameters
  • In a traversal algorithm, “visiting” may mean different things
    • Example: output value, update value in some way
  • Problem: How do we write a generic traversal function?
    • Writing a specific traversal function for each type of “visit” would be cumbersome
  • Solution: pass a function as a parameter to the traversal function

C++ Programming: Program Design Including Data Structures, Fourth Edition

binary tree traversal and functions as parameters continued
Binary Tree Traversal and Functions as Parameters (continued)
  • In C++, a function name without parentheses is considered a pointer to the function
  • To specify a function as a formal parameter to another function:
    • Specify the function type, followed by name as a pointer, followed by the parameter types

C++ Programming: Program Design Including Data Structures, Fourth Edition

summary
Summary
  • A binary tree is either empty or it has a special node called the root node
    • If the tree is nonempty, the root node has two sets of nodes (left and right subtrees), such that the left and right subtrees are also binary trees
  • The node of a binary tree has two links in it
  • A node in the binary tree is called a leaf if it has no left and right children
  • A node U is called the parent of a node V if there is a branch from U to V

C++ Programming: Program Design Including Data Structures, Fourth Edition

summary continued
Summary (continued)
  • Level of a node: number of branches on the path from the root to the node
    • The level of the root node of a binary tree is 0
    • The level of the children of the root is 1
  • Height of a binary tree: number of nodes on the longest path from the root to a leaf

C++ Programming: Program Design Including Data Structures, Fourth Edition

summary continued1
Summary (continued)
  • Inorder traversal
    • Traverse left, visit node, traverse right
  • Preorder traversal
    • Visit node, traverse left, traverse right
  • Postorder traversal
    • Traverse left, traverse right, visit node

C++ Programming: Program Design Including Data Structures, Fourth Edition

ad