Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #include <map>
- #include <unordered_set>
- #include <string>
- class BinaryTree {
- private:
- int root;
- BinaryTree* left;
- BinaryTree* right;
- bool isleft = false;
- bool isright = false;
- public:
- BinaryTree() {
- int root = 0;
- }
- explicit BinaryTree(int v) {
- root = v;
- }
- void insert(int number) {
- if (root > number) {
- if (!isleft) {
- left = new BinaryTree(number);
- isleft = true;
- } else {
- left->insert(number);
- }
- } else if (root < number) {
- if (!isright) {
- right = new BinaryTree(number);
- isright = true;
- } else {
- right->insert(number);
- }
- }
- }
- int get_size() {
- if (!isleft && !isright) {
- return 1;
- }
- int sizeleft = 0;
- int sizeright = 0;
- if (isleft) {
- sizeleft = left->get_size();
- }
- if (isright) {
- sizeright = right->get_size();
- }
- if (sizeleft > sizeright) {
- return sizeleft + 1;
- } else {
- return sizeright + 1;
- }
- }
- };
- int main() {
- int n;
- std::cin >> n;
- if (n != 0) {
- BinaryTree tree(n);
- while (std::cin >> n) {
- if (n == 0) {
- break;
- } else {
- tree.insert(n);
- }
- }
- std::cout << tree.get_size();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement