Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. /* A binary tree node has data, pointer to left child
  4. and a pointer to right child */
  5. struct node
  6. {
  7. int data;
  8. struct node* left, *right;
  9. };
  10.  
  11. /* function to create a new node of tree and returns pointer */
  12. struct node* newNode(int data)
  13. {
  14. struct node* node = (struct node*)
  15. malloc(sizeof(struct node));
  16. node->data = data;
  17. node->left = NULL;
  18. node->right = NULL;
  19.  
  20. return(node);
  21. }
  22.  
  23. void fsrednica(struct node* d,int* sciezka,int* srednica) {
  24. int sciezka1,sciezka2,srednica1,srednica2,pom;
  25. if(d==NULL) {
  26. *sciezka=-1;
  27. *srednica=0;
  28. }
  29. else {
  30. fsrednica(d->left,&sciezka1,&srednica1);
  31. fsrednica(d->right,&sciezka2,&srednica2);
  32. *sciezka = (sciezka1>sciezka2) ? sciezka1+1 : sciezka2+1;
  33. pom = (srednica1>srednica2) ? srednica1 : srednica2;
  34. *srednica = (pom>(sciezka1+sciezka2+2)) ? pom : (sciezka1+sciezka2+2);
  35. }
  36. }
  37.  
  38. int srednicaDrzewa(struct node* d) {
  39. int sciezka;
  40. int srednica;
  41. fsrednica(d,&sciezka,&srednica);
  42.  
  43. return srednica;
  44. }
  45.  
  46. int main()
  47. {
  48. struct node *root = newNode(1);
  49. root->left = newNode(2);
  50. root->right = newNode(3);
  51. root->left->left = newNode(4);
  52. root->left->right = newNode(5);
  53.  
  54. printf("%d",srednicaDrzewa(root));
  55. return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement