Курсор не перемещается в функции вставки дерева, найден в заголовочном файле, который имеет конструктор и определение класса. Как я могу переместить курсор вперед? - PullRequest
0 голосов
/ 20 апреля 2020

Назначение требует, чтобы я написал код для функций вставки, печати и поиска в уже предоставленном файле заголовка дерева. Это очень простое дерево поиска для целых. Вот заголовочный файл:

#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 цифры из моей функции печати. Курсор не движется вперед. Я попытался установить это = слева, который возвращает ошибку. Что я могу сделать? И я не уверен, как использовать все узлы. Я реализую это в функции вставки?

...