Advertisement
Dzham

Untitled

Apr 5th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.60 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <map>
  5. #include <unordered_set>
  6. #include <string>
  7.  
  8. class BinaryTree {
  9. private:
  10. int root;
  11. BinaryTree* left;
  12. BinaryTree* right;
  13. bool isleft = false;
  14. bool isright = false;
  15.  
  16. public:
  17. BinaryTree() {
  18. int root = 0;
  19. }
  20.  
  21. explicit BinaryTree(int v) {
  22. root = v;
  23. }
  24.  
  25. void insert(int number) {
  26. if (root > number) {
  27. if (!isleft) {
  28. left = new BinaryTree(number);
  29. isleft = true;
  30. } else {
  31. left->insert(number);
  32. }
  33. } else if (root < number) {
  34. if (!isright) {
  35. right = new BinaryTree(number);
  36. isright = true;
  37. } else {
  38. right->insert(number);
  39. }
  40. }
  41. }
  42.  
  43. int get_size() {
  44. if (!isleft && !isright) {
  45. return 1;
  46. }
  47. int sizeleft = 0;
  48. int sizeright = 0;
  49. if (isleft) {
  50. sizeleft = left->get_size();
  51. }
  52. if (isright) {
  53. sizeright = right->get_size();
  54. }
  55. if (sizeleft > sizeright) {
  56. return sizeleft + 1;
  57. } else {
  58. return sizeright + 1;
  59. }
  60. }
  61. };
  62.  
  63. int main() {
  64. int n;
  65. std::cin >> n;
  66. if (n != 0) {
  67. BinaryTree tree(n);
  68. while (std::cin >> n) {
  69. if (n == 0) {
  70. break;
  71. } else {
  72. tree.insert(n);
  73. }
  74. }
  75. std::cout << tree.get_size();
  76. }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement