#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;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.