Advertisement
Guest User

Untitled

a guest
Dec 30th, 2015
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.70 KB | None | 0 0
  1. // Задание 5.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6. #include <conio.h>
  7. using namespace std;
  8. struct node
  9. {
  10. int info;
  11. node *l,*r;//левая и правая часть дерева
  12. };
  13. node *tree=NULL;//структура типа деерево
  14. void push(int a,node **t) //функция записи в бинарное дерево
  15. {
  16. if ((*t)==NULL)
  17. {
  18. (*t)=new node; // выделяем память под дерево
  19. (*t)->info=a;
  20. (*t)->l=(*t)->r=NULL;
  21. return;
  22. }
  23. if (a>(*t)->info) push(a,&(*t)->r);// если аргумент а больше чем текущий , кладём его вправо
  24. else push (a,&(*t)->l);
  25. }
  26. void print (node *t,int u) //функция отображения дерева
  27. {
  28. if (t==NULL) return;
  29. else
  30. {
  31. print(t->l,++u);
  32. for (int i=0;i<u;++i) cout<<"|";
  33. cout<< t->info<<endl;
  34. u--;
  35. }
  36. print(t->r,++u); // с помощью рекурсии посещаем левое поддерево
  37. }
  38.  
  39.  
  40. int srd (node *t,int u,int f) //функция отображения дерева
  41. {
  42. int k=f;
  43. if (t==NULL) return k;
  44. if (t->l==NULL || t->r==NULL)
  45. {
  46. k+=t->info;
  47. }
  48.  
  49. u--;
  50. srd(t->r,++u,srd(t->l,++u,k)); // с помощью рекурсии посещаем левое поддерево
  51. }
  52. void main ()
  53. {
  54. setlocale(LC_ALL,"Rus");
  55. int n;
  56. int s;
  57. cout<<"Vvedite kol-vo elementov"<<endl;
  58. cin>>n;
  59. for (int i=0;i<n;++i)
  60. {
  61. cout<<"vvedite 4islo ";
  62. cin>>s;
  63. push(s,&tree);
  64. }
  65. cout<<"Vashe derevo\n";
  66. print(tree,0);
  67. cout<<"\nSrednee znachenie\n";
  68. cout<<srd(tree,0,0)/n;
  69.  
  70. getch();
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement