Я только начал изучать дерево и внедрял его с использованием языка c. Я думаю, что я сделал программу для дерева (двоичное дерево поиска). Но при поиске значения и печати, когда элемент был найден или нет, функция поиска не возвращает значение правильно (или неправильное значение) Я присоединяюсь к этому кодуФункция поиска не возвращает значение
// to search in binary search tree
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct bstnode
{
int data;
struct bstnode *left;
struct bstnode *right;
};
struct bstnode *insert(struct bstnode *,int);
int search(struct bstnode *,int);
void main()
{
int n,s,n1;
char ch;
struct node *root;
clrscr();
root=NULL;
do
{
printf("\nEnter a number\n");
scanf("%d",&n);
root=insert(root,n);
printf("\nDo You Wish to enter more\n");
ch=getch();
} while(ch=='Y'||ch=='y');
printf("Enter a number to search");
scanf("%d",&n1);
s=search(root,n1);
if(s==1)
printf("Found");
else
printf("Not found");
getch();
}
struct bstnode* insert(struct bstnode *root,int data)
{
struct bstnode *newnode=(struct bstnode*)malloc(sizeof(struct bstnode));
newnode->data=data;
newnode->left=NULL;
newnode->right=NULL;
if(root==NULL)
{
root=newnode;
}
else if(data<=root->data)
{
root->left=insert(root->left,data);
}
else
{
root->right=insert(root->right,data);
}
return(root);
}
int search(struct bstnode* root,int data)
{
if(root==NULL)
return 0;
if(root->data==NULL)
return 1;
else if(data<=root->data)
return(root->left,data);
else
return(root->right,data);
}
Пожалуйста, помогите !!!!
Шаг через код с отладчиком и увидеть, где он идет не так. – Barmar
Что вы думаете: 'return (root-> left, data)' будет делать? Вы должны вызывать функцию 'search' рекурсивно, но вы просто возвращаете« данные »с этим. – Barmar
'if (root-> data == NULL)' неверно. 'data' является' int', 'NULL' следует использовать с указателями. – Barmar