Дерево - исправить ошибки в коде - C (СИ)
Формулировка задачи:
Здравсвуйте пытаюсь разобраться в деревьях............пока только создаю. выпадают ошибки.как их исправить?
#include "stdafx.h"
#include "iostream"
#include<conio.h>
using namespace std;
struct Tree
{
int data;
Tree* left;
Tree* right;
}
void Add(Tree*root, int i);
{
Tree*new_el;
new_el=new Tree;
new_el->data=i;
new_el->left=NULL;
new_el->right=NULL;
if(i<root->data)
{if(root->left==NULL)
root->left=new_el;
else
{
Add(root->left,i);
delete new_el;
}
}
if(i>root->data)
{if(root->right==NULL)
root->right=new_el;
else
{
Add(root->right,i);
delete new_el;
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
Tree*root;
root=new Tree;
root->data=NULL;
root->left=NULL;
root->right=NULL;
for(int i=-100;i<=100;i++)
Add(root,i);
return 0;
}
Вот ошибки
Error 1 error C2628: 'Tree' followed by 'void' is illegal (did you forget a ';'?)
Error 2 error C2447: '{' : missing function header (old-style formal list?)
Решение задачи: «Дерево - исправить ошибки в коде»
textual
Листинг программы
Tree * Tree_search(Tree*root, int k)
{ if (root == NULL || k == root->data)
return root;
if (k < root->data)
return Tree_search(root->left, k);
else
return Tree_search(root->right, k);
}
Объяснение кода листинга программы
- Функция
Tree_searchпринимает два аргумента: указатель на узел дереваrootиint k. - Если
rootравенNULLилиkравноroot->data, то функция возвращаетroot. - Если
kменьшеroot->data, то функция рекурсивно вызывает саму себя с аргументамиroot->leftиk, и возвращает результат. - Если
kбольше или равноroot->data, то функция рекурсивно вызывает саму себя с аргументамиroot->rightиk, и возвращает результат. - В обоих случаях, если функция вызывает саму себя, она ищет значение
kв левом или правом поддереве от корняroot. - Если значение
kнайдено в левом или правом поддереве, то возвращается узел, содержащий это значение. - Если значение
kне найдено в левом и правом поддереве, то возвращаетсяNULL.