Дерево - исправить ошибки в коде - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравсвуйте пытаюсь разобраться в деревьях............пока только создаю. выпадают ошибки.как их исправить?
Листинг программы
  1. #include "stdafx.h"
  2. #include "iostream"
  3. #include<conio.h>
  4. using namespace std;
  5. struct Tree
  6. {
  7. int data;
  8. Tree* left;
  9. Tree* right;
  10. }
  11.  
  12. void Add(Tree*root, int i);
  13. {
  14. Tree*new_el;
  15. new_el=new Tree;
  16. new_el->data=i;
  17. new_el->left=NULL;
  18. new_el->right=NULL;
  19. if(i<root->data)
  20. {if(root->left==NULL)
  21. root->left=new_el;
  22. else
  23. {
  24. Add(root->left,i);
  25. delete new_el;
  26. }
  27. }
  28. if(i>root->data)
  29. {if(root->right==NULL)
  30. root->right=new_el;
  31. else
  32. {
  33. Add(root->right,i);
  34. delete new_el;
  35. }
  36. }
  37. }
  38. int _tmain(int argc, _TCHAR* argv[])
  39. {
  40. Tree*root;
  41. root=new Tree;
  42. root->data=NULL;
  43. root->left=NULL;
  44. root->right=NULL;
  45. for(int i=-100;i<=100;i++)
  46. Add(root,i);
  47. return 0;
  48. }
Вот ошибки 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
Листинг программы
  1. Tree * Tree_search(Tree*root, int k)
  2. {   if (root == NULL || k == root->data)
  3.       return root;
  4.    if (k < root->data)
  5.       return Tree_search(root->left, k);
  6.    else
  7.       return Tree_search(root->right, k);
  8. }

Объяснение кода листинга программы

  1. Функция Tree_search принимает два аргумента: указатель на узел дерева root и int k.
  2. Если root равен NULL или k равно root->data, то функция возвращает root.
  3. Если k меньше root->data, то функция рекурсивно вызывает саму себя с аргументами root->left и k, и возвращает результат.
  4. Если k больше или равно root->data, то функция рекурсивно вызывает саму себя с аргументами root->right и k, и возвращает результат.
  5. В обоих случаях, если функция вызывает саму себя, она ищет значение k в левом или правом поддереве от корня root.
  6. Если значение k найдено в левом или правом поддереве, то возвращается узел, содержащий это значение.
  7. Если значение k не найдено в левом и правом поддереве, то возвращается NULL.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут