Назначение требует, чтобы я написал код для функций вставки, печати и поиска в уже предоставленном файле заголовка дерева. Это очень простое дерево поиска для целых. Вот заголовочный файл:
#include <map>
#include <iostream>
class Tree {
Tree *left;
Tree *right;
int node;
static std::map<int, Tree*> allNodes;
public:
Tree(int n, Tree *l=0, Tree *r=0) : left(l), right(r), node(n) {
allNodes[n] = this;
}
int GetNode() { return node; }
void Insert(Tree *newnode) {
// insert code to Insert newnode into tree pointed to by this... return the tree
// My own code // cout<<this->node;
if( newnode->node == this->node ){}
// skip dup
//Everything after is also my code
else if (newnode->node < this->node){
left = newnode;
cout<<"left"<<left->node<<endl;
}
else if (newnode->node > this->node){
right = newnode;
cout<<"right"<<right->node<<endl;
}
}
Вот код, который его реализует (я написал код в самом низу):
#include <iostream>
#include <string>
#include <vector>
using namespace std;
#include "trav.h"
std::map<int, Tree*> Tree::allNodes;
// trav print
// trav find X
int
main(int argc, char *argv[])
{
if( argc < 2 )
return 0;
string cmd(argv[1]);
// READ IN THE INTEGERS
vector<int> ids;
int input;
while( cin >> input ) {
ids.push_back( input );
}
// MAKE NODES FROM THE INTEGERS
vector<Tree*> nodes;
for( int id: ids ) {
nodes.push_back( new Tree(id) );
}
if( ids.size() == 0 )
return -1;
// PUT NODES INTO A TREE USING Insert
Tree *theTree = nodes[0];
if( theTree == nullptr )
return -1;
for( auto n : nodes ) {
//My code// theTree->Insert(n);
}
// PRINT TREE
if( cmd == "print" ) {
theTree->Print();
}
/*if (cmd == "find") {
string no = argv[2];
int num = atoi(no);
int result = theTree-> find(num);
if(result!=0)
cout<<num<<endl;
else
cout<<"-1"<<endl;
}*/
return 0;
}
Вот мой вывод:
3232left8
32left3
32left5
32left9
32right40
32right100
32right632
32left1
32left9
32left9
32left3
32left2
32right64
32right43
2
43
32
Последние 3 цифры из моей функции печати. Курсор не движется вперед. Я попытался установить это = слева, который возвращает ошибку. Что я могу сделать? И я не уверен, как использовать все узлы. Я реализую это в функции вставки?