Алфавитная сортировка бинарного дерева поиска в Stack Overflow

Я новичок в stackoverflow, я просто отчаялся и надеюсь на чудо.

Я должен прочитать из файла список людей с их информацией, являющейся
Фамилия (до 20 символов)
Имя (до 20 символов)
Номер дома (целое число)
Улица (до 20 символов)
Город (до 20 символов)
Сокращение штата (до 2 символов)
Почтовый индекс (5-значный код)

У меня должно быть два бинарных дерева поиска, одно из которых отсортировано по почтовому индексу, а другое по фамилии. Профессор, как правило, дает нам тонну информации о причинах написания кода, но абсолютно ничего с точки зрения реализации. Я довольно растерян, особенно когда дело доходит до сортировки строк по алфавиту. Я даже не дошел до той части кода, где я читал из файла, но я сначала пытаюсь настроить свои методы.

Любые предложения о том, как создать алфавитно упорядоченное дерево двоичного поиска c ++? Нужно ли мне две разные структуры узлов и вставлять методы для его упорядочения по почтовому индексу и фамилии?

вот мой код до сих пор

#include<iostream>
#include<iterator>
#include<fstream>
#include<cstdlib>

using namespace std;

class inputInfo
{
private:
string tempLast;
string tempFirst;
int tempHouse;
string tempStreet;
string tempCity;
string tempState;
int tempZip;

public:
void setLast(string last);
void setFirst(string first);
void setHouse(int house);
void setStreet(string street);
void setCity(string city);
void setState(string sate);
void setZip(int zip);

string getLast();
string getFirst();
int getHouse();
string getStreet();
string getCity();
string getState();
int getZip();
}
void inputInfo::setLast(string last)
{tempLast=last;}
void inputInfo::setFirst(string first)
{tempFirst=first;}
void inputInfo::setHouse(int house)
{tempHouse=house;}
void inputInfo::setStreet(string street)
{tempStreet=street;}
void inputInfo::setCity(string city)
{tempCity=city;}
void inputInfo::setState(string state)
{tempState=state;}
void inputInfo::setZip(int zip)
{tempZip=zip;}

string inputInfo::getLast()
{return tempLast;}
string inputInfo::getFirst()
{return tempFirst;}
int inputInfo::getHouse()
{return tempHouse;}
string inputInfo::getStreet()
{return tempStreet;}
string inputInfo::getCity()
{return tempCity;}
string inputInfo::getState()
{return tempState;}
int inputInfo::getZip()
{return tempZip;}

//Node structure for binary tree organized by zip
struct zipNode{
inputInfo data;
zipNode* left;
zipNode* right;
}

//Function to creat a new node
zipNode* GetNewNode(inputInfo data){
zipNode* newNode = new zipNode();
newNode->data = data;
newNode->left=newNode->right=NULL;
return newNode;
}
//insert data in BST, returns address of root node
zipNode* InsertZip(zipNode* root, inputInfo data){
if(root == NULL)
{
root= GetNewNode(data);
}

else if(data.getZip() <= root->data.getZip())
{
root->left=Insert(root->left,data);
}
else
{
root->right=Insert(root->right,data);
}
return root;
}

struct nameNode{
inputInfo data;
nameNode* left;
nameNode* right;
}

//Function to creat a new node
nameNode* GetNewNode(inputInfo data){
nameNode* newNode = new nameNode();
nameNode->data = data;
nameNode->left=newNode->right=NULL;
return newNode;
}
//insert data in BST, returns address of root node
nameNode* InsertName(nameNode* root, inputInfo data){
if(root == NULL)
{
root= GetNewNode(data);
}

else if(data.getLast() <= root->data.getLast())
{
root->left=Insert(root->left,data);
}
else
{
root->right=Insert(root->right,data);
}
return root;
}

0

Решение

Любое двоичное дерево поиска при обходе в Inorder приводит к отсортированному массиву.

Если вы хотите отсортировать строки, просто сравните их, как обычно, с целыми числами, так как в С ++ все эти функции встроены.

И после того, как вы успешно вставили данные. Примените обход Inorder, и вы получите отсортированный по алфавиту массив.
Просто включите
а затем вы можете сравнить строки, как обычный тип данных [например,. str1> str2]

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector