Starting Out with C++ from Control Structures to Objects, Student Value Edition (9th Edition)
Starting Out with C++ from Control Structures to Objects, Student Value Edition (9th Edition)
9th Edition
ISBN: 9780134443829
Author: Tony Gaddis
Publisher: PEARSON
bartleby

Concept explainers

Question
Book Icon
Chapter 21, Problem 2PC
Program Plan Intro

Node Counter

Program Plan:

Main.cpp:

  • Include required header files.
  • Inside the “main ()” function,
    • Display the number of nodes by calling the function “numNodes ()”.
    • Insert nodes into the binary tree by using the function “insert_Node ()”.
    • Display those nodes by using the function “display_InOrder ()”.
    • Now, display the number of nodes by calling the function “numNodes ()”.
    • Delete two nodes from the binary tree by using the function “remove ()”.
    • Display remaining nodes by using the function “display_InOrder ()”.
    • Finally, display the number of nodes by calling the function “numNodes ()”.

BinaryTree.h:

  • Include required header files.
  • Create a class template.
  • Declare a class named “BinaryTree”. Inside the class,
    • Inside the “private” access specifier,
      • Give the structure declaration for the creation of node.
        • Create an object for the template.
        • Create two pointers named “left_Node” and “right_Node” to access the value left and right nodes respectively.
      • Declare a variable “leafCount”.
      • Create a pointer named “root” to access the value of root node.
      • Give function declaration for “insert ()”, “destroy_SubTree ()”, “delete_Node ()”, “make_Deletion ()”, “display_InOrder ()”, “display_PreOrder ()”, “display_PostOrder ()”, and “count_Nodes ()”.
    • Inside “public” access specifier,
      • Give the definition for constructor and destructor.
      • Give function declaration.
  • Declare template class.
  • Give function definition for “insert ()”.
    • Check if “nodePtr” is null.
      • If the condition is true then, insert node.
    • Check if value of new node is less than the value of node pointer
      • If the condition is true then, Insert node to the left branch by calling the function “insert ()” recursively.
    • Else
      • Insert node to the right branch by calling the function “insert ()” recursively.
  • Declare template class.
  • Give function definition for “insert_Node ()”.
    • Create a pointer for new node.
    • Assign the value to the new node.
    • Make left and right node as null
    • Call the function “insert ()” by passing parameters “root” and “newNode”.
  • Declare template class.
  • Give function definition for “destroy_SubTree ()”.
    • Check if the node pointer points to left node
      • Call the function recursively to delete the left sub tree.
    • Check if the node pointer points to the right node
      • Call the function recursively to delete the right sub tree.
    • Delete the node pointer.
  • Declare template class.
  • Give function definition for “search_Node ()”.
    • Assign false to the Boolean variable “status”.
    • Assign root pointer to the “nodePtr”.
    • Do until “nodePtr” exists.
      • Check if the value of node pointer is equal to “num”.
        • Assign true to the Boolean variable “status”
      • Check if the number is less than the value of node pointer.
        • Assign left node pointer to the node pointer.
      • Else
        • Assign right node pointer to the node pointer.
    • Return the Boolean variable.
  • Declare template class.
  • Give function definition for “remove ()”.
    • Call the function “delete_Node ()”
  • Declare template class.
  • Give function definition for “delete_Node ()”
    • Check if the number is less than the node pointer value.
      • Call the function “delete_Node ()” recursively.
    • Check if the number is greater than the node pointer value.
      • Call the function “delete_Node ()” recursively.
    • Else,
      • Call the function “make_Deletion ()”.
  • Declare template class.
  • Give function definition for “make_Deletion ()”
    • Create pointer named “tempPtr”.
    • Check if the nodePtr is null.
      • If the condition is true then, print “Cannot delete empty node.”
    • Check if right node pointer is null.
      • If the condition is true then,
        • Make the node pointer as the temporary pointer.
        • Reattach the left node child.
        • Delete temporary pointer.
    • Check is left node pointer is null
      • If the condition is true then,
        • Make the node pointer as the temporary pointer.
        • Reattach the right node child.
        • Delete temporary pointer.
    • Else,
      • Move right node to temporary pointer
      • Reach to the end of left-Node using “while” condition.
        • Assign left node pointer to temporary pointer.
      • Reattach left node sub tree.
      • Make node pointer as the temporary pointer.
      • Reattach right node sub tree
      • Delete temporary pointer.
  • Declare template class.
  • Give function definition for “display_InOrder ()”.
    • Check if the node pointer exists.
      • Call the function “display_InOrder ()” recursively.
      • Print the value
      • Call the function “display_InOrder ()” recursively.
  • Declare template class.
  • Give function definition for “display_PreOrder ()”.
    • Print the value.
    • Call the function “display_PreOrder ()” recursively.
    • Call the function “display_PreOrder ()” recursively.
  • Declare template class.
  • Give function definition for “display_PostOrder ()”.
    • Call the function “display_PostOrder ()” recursively.
    • Call the function “display_PostOrder ()” recursively.
    • Print value
  • Declare template class.
  • Give function definition for “numNodes ()”.
    • Call the function “count_Nodes ()”.
  • Declare template class.
  • Give function definition for “count_Nodes ()”.
    • Declare a variable named “count”.
    • Check if the node pointer is null
      • Assign 0 to count.
    • Else,
      • Call the function “count_Nodes ()” recursively.
    • Return the variable “count”.

Blurred answer
Students have asked these similar questions
Distributed Systems: Consistency Models fer to page 45 for problems on data consistency. structions: Compare different consistency models (e.g., strong, eventual, causal) for distributed databases. Evaluate the trade-offs between availability and consistency in a given use case. Propose the most appropriate model for the scenario and explain your reasoning. Link: [https://drive.google.com/file/d/1wKSrun-GlxirS31Z9qoHazb9tC440AZF/view?usp=sharing]
Operating Systems: Deadlock Detection fer to page 25 for problems on deadlock concepts. structions: • Given a system resource allocation graph, determine if a deadlock exists. If a deadlock exists, identify the processes and resources involved. Suggest strategies to prevent or resolve the deadlock and explain their trade-offs. Link: [https://drive.google.com/file/d/1wKSrun-GlxirS31Z9qoHazb9tC440 AZF/view?usp=sharing]
Artificial Intelligence: Heuristic Evaluation fer to page 55 for problems on Al search algorithms. tructions: Given a search problem, propose and evaluate a heuristic function. Compare its performance to other heuristics based on search cost and solution quality. Justify why the chosen heuristic is admissible and/or consistent. Link: [https://drive.google.com/file/d/1wKSrun-GlxirS31Z9qoHazb9tC440 AZF/view?usp=sharing]
Knowledge Booster
Background pattern image
Computer Science
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
SEE MORE QUESTIONS
Recommended textbooks for you
Text book image
C++ Programming: From Problem Analysis to Program...
Computer Science
ISBN:9781337102087
Author:D. S. Malik
Publisher:Cengage Learning