AfanasevGad7

This is a task for our favourite professor
git clone git://git.stellar-nexus.ru/AfanasevGad7
Log | Files | Refs

commit 3461fbd8543736a3352b47eb465653912c7720cb
parent f34e49736e9c0ea8dc644d8fefb926d489ff643a
Author: Plat <plat@stellar-nexus.ru>
Date:   Thu, 23 Oct 2025 20:08:50 +0000

Attempt 2 to fix balancing

Diffstat:
Mfinal_solution.cpp | 31+++++++++++++++----------------
1 file changed, 15 insertions(+), 16 deletions(-)

diff --git a/final_solution.cpp b/final_solution.cpp @@ -32,14 +32,14 @@ Node* search(Node*, int); int main() { - Node* root = init(67); + Node* root = nullptr; int k = 1; while (k > 0) { std::cin >> k; - add(k, root); - root = balance2(root); + if (k > 0) + root = add(root, k); } // value_node = search(root, 'int value from input')); @@ -63,21 +63,20 @@ init(int val) } -void +Node* add(int val, Node* root) { - if (val < root->val) { - if (!root->left) - root->left = init(val); - else - add(val, root->left); - } - else { - if (!root->right) - root->right = init(val); - else - add(val, root->right); - } + if (!root) + return init(val); + + if (val < root->val) + root->left = add(root->left, val); + else if (val > root->val) + root->right = add(root->right, val); + else + return root; + + return balance2(root) }