forked from alexey-sidnev/infrastructure
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Implementation of search function in tree and application with correct
coding style
- Loading branch information
Showing
8 changed files
with
138 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
|
||
#Задача по работе с бинарным деревом. | ||
1. Написать функцию поиска в бинарном дереве. Написать тесты. | ||
2. Реализовать приложение, в котором демонтрируется печать бинарного дерева с выводом адресов левого и правого поддеревьев. |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
#include "search_in_tree.h" | ||
#include <iostream> | ||
|
||
int main() { | ||
CNode* tree = create_tree_for_tests(); | ||
|
||
std::cout << std::endl << "Tree" << std::endl << std::endl; | ||
print_tree(tree, 3); | ||
std::cout << "" << std::endl; | ||
|
||
std::cout << "Tree with adress" << std::endl << std::endl; | ||
print_tree_with_adress(tree, 3); | ||
CNode** res = find(&tree, 9); | ||
*res = new CNode(9); | ||
CNode* new_search = *(find(&tree, 9)); | ||
std::cout << std::endl << | ||
"Tree with adress after adding an element on found position" | ||
<< std::endl << std::endl; | ||
print_tree_with_adress(tree, 3); | ||
} |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
#ifndef INCLUDE_SEARCH_IN_TREE_H_ | ||
#define INCLUDE_SEARCH_IN_TREE_H_ | ||
|
||
struct CNode { | ||
int val; | ||
CNode* left, *right; | ||
explicit CNode(int v) { val = v; left = 0; right = 0; } | ||
}; | ||
|
||
CNode** find(CNode** root, int v); | ||
void print_tree(CNode* root, int level); | ||
void print_tree_with_adress(CNode* root, int level); | ||
CNode* create_tree_for_tests(); | ||
void PrintTree(CNode** root); | ||
|
||
#endif // INCLUDE_SEARCH_IN_TREE_H_ |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
#include <iostream> | ||
#include <queue> | ||
#include "search_in_tree.h" | ||
|
||
CNode** find(CNode** root, int v) { | ||
CNode **tree = root; | ||
while (*tree) { | ||
if ((*tree)->val == v) { | ||
return tree; | ||
} else { | ||
if ((*tree)->val < v) { | ||
tree = &(*tree)->right; | ||
} else { | ||
tree = &(*tree)->left; | ||
} | ||
} | ||
} | ||
return tree; | ||
} | ||
|
||
void print_tree(CNode* root, int level) { | ||
if (root) { | ||
print_tree(root->right, level + 1); | ||
for (int i = 0; i< level; i++) std::cout << " "; | ||
std::cout << root->val << std::endl; | ||
print_tree(root->left, level + 1); | ||
} | ||
} | ||
|
||
void print_tree_with_adress(CNode* root, int level) { | ||
if (root) { | ||
print_tree_with_adress(root->right, level + 1); | ||
for (int i = 0; i< level; i++) std::cout << " "; | ||
std::cout << root->val << std::endl; | ||
for (int i = 0; i< level-1; i++) std::cout << " "; | ||
std::cout << " "; | ||
std::cout << root->left << std::endl; | ||
for (int i = 0; i< level-1; i++) std::cout << " "; | ||
std::cout << " "; | ||
std::cout << root->right << std::endl; | ||
print_tree_with_adress(root->left, level + 1); | ||
} | ||
} | ||
|
||
CNode* create_tree_for_tests() { | ||
CNode* tree = new CNode(5); | ||
tree->left = new CNode(3); | ||
tree->right = new CNode(7); | ||
(tree->right)->left = new CNode(6); | ||
(tree->left)->left = new CNode(1); | ||
(tree->left)->right = new CNode(4); | ||
return tree; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters