Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

#include <iostream> #include <string> using namespace::std; // ASSUME ALL TREES

ID: 3760746 • Letter: #

Question

#include <iostream>

#include <string>

using namespace::std;

// ASSUME ALL TREES ARE ORDERED AND THERE ARE NO DUPLICATE DATA ITEMS

// SOME ALGORITHMS REQUIRE A COMPLETE TRAVERSAL

// SOME ALGORITHMS WILL USE A DIRECT PATH, WITHOUT A TRAVERSAL

struct OrderedTreeNode

{

   OrderedTreeNode * leftC;

   string name;

   OrderedTreeNode * rightC;

};

void printSorted(const OrderedTreeNode * root)

{

if ( root == nullptr ) return;

   printSorted(root->leftC);

   cout << root->name << " : ";

   printSorted(root->rightC);

return;

}

void makeShape1(OrderedTreeNode * & root);

void makeShape2(OrderedTreeNode * & root);

void makeShape3(OrderedTreeNode * & root);

int countNumberNodes(const OrderedTreeNode * root);

int countNumberLeaves(const OrderedTreeNode * root);

int treeDepth(const OrderedTreeNode * root);

string largest(const OrderedTreeNode * root);

string smallest(const OrderedTreeNode * root);

const OrderedTreeNode * findNode(const OrderedTreeNode * root, string lookFor); // return nullptr if not found

bool isLeaf(const OrderedTreeNode * root, string lookFor);

void insertOrderedNode(OrderedTreeNode * & root, string info);

void deletetOrderedNodeLeaf(OrderedTreeNode * & root, string info);

void deleteAllNodes(OrderedTreeNode * & root);

void main()

{

   OrderedTreeNode * oneRoot;

   makeShape1(oneRoot);

   printSorted(oneRoot);

   cout << endl;

}

void makeShape1(OrderedTreeNode * & root)

{

/*

   N

   /

                                                                                  /

   N N

   /

/

                                                                           N N

   */

   root = new OrderedTreeNode;

   root->name = string("Helen Forrest");

   root->leftC = new OrderedTreeNode;

   root->leftC->name = string("Benny Goodman");

   root->leftC->leftC = new OrderedTreeNode;

   root->leftC->leftC->leftC = nullptr;

   root->leftC->leftC->name = string("Artie Shaw");

   root->leftC->leftC->rightC = nullptr;

   root->leftC->rightC = new OrderedTreeNode;

   root->leftC->rightC->name = string("Deanna Durbin");

   root->leftC->rightC->leftC = nullptr;

   root->leftC->rightC->rightC = nullptr;

   root->rightC = new OrderedTreeNode;

   root->rightC->name = string("Vera Lynn");

   root->rightC->leftC = nullptr;

   root->rightC->rightC = nullptr;

}

Explanation / Answer

#include <stdio.h>
#include <iostream>
#include <string>
using namespace::std;
// ASSUME ALL TREES ARE ORDERED AND THERE ARE NO DUPLICATE DATA ITEMS
// SOME ALGORITHMS REQUIRE A COMPLETE TRAVERSAL
// SOME ALGORITHMS WILL USE A DIRECT PATH, WITHOUT A TRAVERSAL
struct OrderedTreeNode
{
    OrderedTreeNode * leftC;
    string name;
    OrderedTreeNode * rightC;
};
void printSorted(const OrderedTreeNode * root)
{
   if ( root == nullptr )
       return;
    printSorted(root->leftC);
    cout << root->name << " : ";
    printSorted(root->rightC);
   return;
}
void makeShape1(OrderedTreeNode * & root);
void makeShape2(OrderedTreeNode * & root);
void makeShape3(OrderedTreeNode * & root);
int countNumberNodes(const OrderedTreeNode * root);
int countNumberLeaves(const OrderedTreeNode * root);
int treeDepth(const OrderedTreeNode * root);
string largest(const OrderedTreeNode * root);
string smallest(const OrderedTreeNode * root);
const OrderedTreeNode * findNode(const OrderedTreeNode * root, string lookFor);   // return nullptr if not found
bool isLeaf(const OrderedTreeNode * root, string lookFor);
void insertOrderedNode(OrderedTreeNode * & root, string info);
void deletetOrderedNodeLeaf(OrderedTreeNode * & root, string info);
void deleteAllNodes(OrderedTreeNode * & root);

int main(void)
{
    OrderedTreeNode * oneRoot;
    makeShape1(oneRoot);
    printSorted(oneRoot);
    cout << endl;

    return 0;
}
void makeShape1(OrderedTreeNode * & root)
{
/*

                           N
                         /  
                        /    
                       N       N
                     /  
                    /    
                   N       N
*/
    root = new OrderedTreeNode;
    root->name = string("Helen Forrest");
    root->leftC = new OrderedTreeNode;
    root->leftC->name = string("Benny Goodman");
    root->leftC->leftC = new OrderedTreeNode;
    root->leftC->leftC->leftC = nullptr;
   root->leftC->leftC->name = string("Artie Shaw");
    root->leftC->leftC->rightC = nullptr;
    root->leftC->rightC = new OrderedTreeNode;
    root->leftC->rightC->name = string("Deanna Durbin");
    root->leftC->rightC->leftC = nullptr;
    root->leftC->rightC->rightC = nullptr;
    root->rightC = new OrderedTreeNode;
    root->rightC->name = string("Vera Lynn");
    root->rightC->leftC = nullptr;
    root->rightC->rightC = nullptr;
}