Нужно проверить есть ли элемент Х в бинарном дереве. Моя функция Find работает рандомно, то находит то не находит (хотя он есть). В чем ошибка?
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cstdio>
using namespace std;
struct BinaryTree {
int Data;
BinaryTree * Left;
BinaryTree * Right;
};
void Make_BinaryTree(BinaryTree** Node, int n){
BinaryTree** ptr;
srand(time(NULL)*1000);
while (n > 0) {
ptr = Node;
while (*ptr != NULL) {
if ((double) rand()/RAND_MAX < 0.5)
ptr = &((*ptr)->Left);
else ptr = &((*ptr)->Right);
}
(*ptr) = new BinaryTree();
cout << "Введите значение ";
cin >> (*ptr)->Data;
n--;
}
}
//прямой обход
void PreOrder_BinaryTree(BinaryTree* Node) {
if (Node != NULL) {
printf ("%3ld",Node->Data);PreOrder_BinaryTree(Node->Left);
PreOrder_BinaryTree(Node->Right);
}
}
void Find(BinaryTree* Node, int x) {
if (Node==NULL) {
cout<<x<<" - не найден"<<endl;
return;
}
else if (Node->Data==x) {
cout<<x<<" - найден"<<endl;
return;
}
else if (Node->Data > x)
Find(Node->Right, x);
else
Find(Node->Left, x);
}
void Delete_BinaryTree(BinaryTree* Node) {
if (Node != NULL) {
Delete_BinaryTree(Node->Left);
Delete_BinaryTree(Node->Right);
delete(Node);
}
}
int main() {
BinaryTree *BTree=NULL;
Make_BinaryTree(&BTree, 5);
PreOrder_BinaryTree(BTree); //вывод элементов
cout<<endl;
Find(BTree, 5); //вызов поиска
Delete_BinaryTree(BTree);
return 0;
}
Проблема в функции Make_BinaryTree
. Вы сначала определяете ветку, куда будет помещено значение, а потом его вводите. Нужно сначала ввести, а потом на основе введеного значения определить куда его поместить. Также нужно учитывать возможность ввода дубликатов. Функция Find
делает предположение, что все значения в дереве отсортированы, чего Make_BinaryTree
не обещает.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Можно ли его как то указать в настройках движка (как в Unity)?
Есть родитель (закрыт для публичного использования):
Есть ли стандартная библиотека или готовое решение, которая может конвертировать символы например как делает этот сайтhttps://allcalc
Вводные данные: VS2017 запущенный от имени АдминистратораNET Framework 4