рдПрдХ рдорд╛рдореВрд▓реА рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдЧрд╛рдЗрдб: рднрд╛рдЧ 1

рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЛрд╕реНрдЯ рддреИрдпрд╛рд░ рдХреА рдЧрдИ рд╣реИред рдЗрд╕рдореЗрдВ рд╕рднреА рдореБрдЦреНрдп рд╡рд┐рд╖рдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдХрдо рд╕реЗ рдХрдо, рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рд╕реЗ рдкрд╣рд▓реЗ рдЬрд╛рдирдирд╛ рд╡рд╛рдВрдЫрдиреАрдп рд╣реИред рд╣рдордиреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрдиреБрднрд╡, рдЕрдиреБрднрд╡ рдФрд░ рд╕рд╣рдХрд░реНрдорд┐рдпреЛрдВ рдХреА рдХрд╣рд╛рдирд┐рдпреЛрдВ, рд╡рд┐рд╢реЗрд╖ рд╕рд╛рд╣рд┐рддреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рдХреБрдЫ рд╡рд┐рд╖рдп рдХреБрдЫ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЖрдк рддрдп рдХрд░рддреЗ рд╣реИрдВред рдореЗрд░реА рд╕рд▓рд╛рд╣ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рд╡рд┐рд╖рдпреЛрдВ / рд╡рд░реНрдЧреЛрдВ / рдкрд╣рд▓реБрдУрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрдерд╛рд╕рдВрднрд╡ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдФрд░ рдЗрд╕рд▓рд┐рдП, рдПрдХ рдЖрд╡рд╢реНрдпрдХ рдЬреНрдЮрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ:
рдКрдкрд░ рджреА рдЧрдИ рд╕реВрдЪреА, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рдЙрдирд╕реЗ рдЬреБрдбрд╝реА рд╣рд░ рдЪреАрдЬ рдХреЛ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдпрд╣ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рднреА рдирд╣реАрдВ рд╣реИред рдХрдо рд╕реЗ рдХрдо рдиреМрд╕рд┐рдЦрд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдПред рдХреБрдЫ рдиреНрдпреВрдирддрдо рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд▓реЗрдЦрдХ рдФрд░ рдХреБрдЫ рдпреЛрдЧреНрдп рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░рдХрд░реНрддрд╛рдУрдВ рдХреА рд░рд╛рдп рдореЗрдВ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ
рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдФрд░ "рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ"
рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛
рдФрд░ рдЕрдм рдЕрд▓рдорд╛рд░рд┐рдпреЛрдВ рдкрд░, рдХреНрдпрд╛, рдХреИрд╕реЗ рдФрд░ рдХреНрдпреЛрдВ?

рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ

рдРрд░реЗ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕

рдкреНрд░рд╢реНрди рдЬреЛ "рд╕реНрдерд┐рддрд┐" рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рджреЗрддреЗ рд╣реИрдВ:
" рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдЬреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕рднреА рд╡рд░реНрдг рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдЧреИрд░-рджреЛрд╣рд░рд╛ рд░рд╣реЗ рд╣реИрдВ ред"
рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдПрдХ ASCII рд╡рд░реНрдг рд╕реЗрдЯ рд╣реИ (рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЖрдкрдХреЛ "рдХрдВрдЯреЗрдирд░" рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рддрд░реНрдХ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛)ред

bool are_unique_characters(const std::string& str) { std::vector<bool> char_set(256, false); for (int i = 0; i < str.size(); ++i) { int val = str.at(i); if (char_set[val]) { return false; } char_set[val] = true; } return true; } 


рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдЯрд┐рд▓рддрд╛ рд╣реЗ (рдПрди), рдЬрд╣рд╛рдВ рдПрди рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рд╣реИред рдпрд╣ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреЗ рджреМрд░рд╛рди рдЖрдк рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ / рд╕рд╣реА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрддреЗ рд╣реИрдВред
рдпрджрд┐ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдХреЗрд╡рд▓ "a" рд╕реЗ "z" (рд▓реЛрдЕрд░рдХреЗрд╕ рдЕрдХреНрд╖рд░) рдЕрдХреНрд╖рд░ рд╣реИрдВ, рддреЛ рдирд┐рдореНрди рдХреЛрдб рдПрдХ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд╡реЗрдХреНрдЯрд░ рдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 bool are_unique_characters(const std::string& str) { int checker = 0; for (int i = 0; i < str.size(); ++i) { int val = str.at(i) - 'a'; if ((checker & (1 << val)) > 0) { return false; } checker |= (1 << val); } return true; } 

рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреНрд▓рд╛рд╕рд┐рдХ рдХрд╛рд░реНрдп рд╣реИ: " рд╕реА-рд▓рд╛рдЗрди рдХреЛ рдЪрд╛рд▓реВ рдХрд░реЗрдВ (рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐" abcd "рдкрд╛рдБрдЪ рд╡рд░реНрдг рд╣реИрдВ, рдкрд╛рдБрдЪрд╡рд╛рдБ рд╕рдорд╛рдкреНрддрд┐ рд╢рдмреНрдж null рд╡рд░реНрдг '\ 0' рд╣реИ) ред"
рдЗрд╕рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдирд┐рд░реНрдгрдп рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ рдФрд░ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдВ, рдЖрдкрдХрд╛ рдХреЛрдб рдмреЗрд╣рддрд░ рдХреНрдпреЛрдВ рд╣реИ?

 void reverse_c_string(char* str) { char* end = str; char tmp; if (str) { while (*end) { ++end; } --end; while (str < end) { tmp = *str; *str++ = *end; *end-- = tmp; } } } 


рд╣реЛрдорд╡рд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ: тАЬрдЖрдкрдХреЛ рдПрдХ NxN рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЫрд╡рд┐ рджреА рдЧрдИ рд╣реИ, рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдХрд╛ рд╡рдЬрди 4 рдмрд╛рдЗрдЯ рд╣реЛрддрд╛ рд╣реИред рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВ рдЬреЛ рдЫрд╡рд┐ рдХреЛ 90 рдбрд┐рдЧреНрд░реА рдкрд░ рдлрд╝реНрд▓рд┐рдк рдХрд░рддрд╛ рд╣реИ ред тАЭ

рд╕рдВрдмрдВрдзрд┐рдд рд╕реВрдЪреА

рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪрд┐рдпреЛрдВ рдкрд░ рдкреНрд░рд╢реНрди, рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд░рдЦрдирд╛ рд╣реИред рд╕рд╡рд╛рд▓ рдПрдХ рд╕рд╛рдзрд╛рд░рдг "рдПрдХ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рд╕реЗ рдПрдХ рдиреЛрдб рдХреЛ рд╣рдЯрд╛ рджреЗрдВ" рд╕реЗ рдЕрдзрд┐рдХ рдорд╛рдирд╕рд┐рдХ рд░реВрдк рд╕реЗ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛рдж рд░рдЦреЗрдВ, рдЬрдм рдЖрдкрд╕реЗ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдХрд┐ рдХреМрди рд╕реА рд╕реВрдЪреА рдкреНрд░рд╢реНрди рдореЗрдВ рд╣реИ - рдЕрдХреЗрд▓реЗ рдпрд╛ рджреЛрдЧреБрдиреЗ рд╕реЗ рдЬреБрдбрд╝реАред рдлрд┐рд░, рдЖрдкрдХреЛ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдПрдХ рд╕реВрдЪреА рдХреИрд╕реЗ рдмрдирд╛рдИ рдЬрд╛рдП рдФрд░ рдПрдХ рдПрдХрд▓ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рд╕реЗ рдиреЛрдб рдХреЛ рдХреИрд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛рдПред

рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг:
" рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЖрдЗрдЯрдореЛрдВ рдХреЛ рдПрдХ рд▓рд┐рдВрдХ рди рдХреА рдЧрдИ рд╕реВрдЪреА рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦреЗрдВ ред"
рд╣реЛрдиреЗ
 struct list_node { int data; list_node* next; }; 

рд╕рдорд╛рдзрд╛рди рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛ (рдФрд░ рддреБрдореНрд╣рд╛рд░рд╛?):
 void delete_duplicates(list_node* head) { if (NULL == head) { return; } list_node* previous = head; list_node* current = previous->next; while (NULL != current) { list_node* runner = head; while (runner != current) { if (runner->data == current->data) { list_node* tmp = current->next; previous->next = tmp; current = tmp; break; } runner = runner->next; } if (runner == current) { previous = current; current = current->next; } } } 


" рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдЬреЛ рдПрдХ рдиреЛрдб рдХреЛ рдмрд╕ рдХрдиреЗрдХреНрдЯ рдХреА рдЧрдИ рд╕реВрдЪреА рдХреЗ рдмреАрдЪ рд╕реЗ рд╣рдЯрд╛рддрд╛ рд╣реИ; рдХреЗрд╡рд▓ рдЙрд╕ рдиреЛрдб рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ ред"
рд╕рдорд╛рдзрд╛рди рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпрджрд┐ рд╣рдЯрд╛рдП рдЧрдП рдиреЛрдб рд╕реВрдЪреА рдореЗрдВ рдЕрдВрддрд┐рдо рдиреЛрдб рд╣реИ рдФрд░ рдЖрдкрдХрд╛ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░рдХрд░реНрддрд╛ рдЗрд╕реЗ рд╕реБрдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдХрд╛рд░реНрдп рд╣рд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред

 bool delete_node(list_node* nd) { if (NULL == nd || NULL == nd->next) { return false; // whatta..? } list_node* nxt = nd->next; nd->data = nxt->data; nd->next = nxt->next; return true; } 

рдЙрд░реНрдл рд╣реЛрдорд╡рд░реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢реНрди:
" рдЖрдкрдХреЗ рдкрд╛рд╕ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рджреЛ рдирдВрдмрд░ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдореЗрдВ рдПрдХ рдЕрдВрдХ рд╣реЛрддрд╛ рд╣реИред рд╕рдВрдЦреНрдпрд╛рдПрдВ рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИрдВред рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВ рдЬреЛ рдЗрди рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдпреЛрдЧ рдХреЛ рдШрдЯрд╛рддрд╛ рд╣реИ рдФрд░ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рд▓реМрдЯрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг: рд╕рдВрдЦреНрдпрд╛ 295 рдФрд░ 513 рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреБрд▓ 808 рдорд┐рд▓реЗред
рдЗрдирдкреБрдЯ: (5 -> 9 -> 2), (3 -> 1 -> 5)
рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ: (8 -> 0 -> 8) ред "

" рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдХреЗ рдордзреНрдп рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ ред"

рдвреЗрд░ рдФрд░ рдХрддрд╛рд░

рдЖрд╡рд╢реНрдпрдХ рдЬреНрдЮрд╛рди рд╕реНрдЯреИрдХ рдФрд░ рдХрддрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рд▓рд╛рдЧреВ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕рднреА рдЗрдирдкреБрдЯ рдореВрд▓реНрдпреЛрдВ рдФрд░ "рд╕реАрдорд╛ рдорд╛рдорд▓реЛрдВ" рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдпрд╛рдж рд░рдЦреЗрдВред

" рдПрдХ рд╡рд░реНрдЧ my_queue рд▓рд┐рдЦреЗрдВ рдЬреЛ рджреЛ рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрддрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ ред"
" рдиреАрдЪреЗ рдкрд┐рдЫрд▓реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдЗрд╕ рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ? "

 template <typename T> class my_queue { private: std::stack<T> m_stack1; std::stack<T> m_stack2; int size() const { return m_stack1.size() + m_stack2.size(); } void add(const T& value) { m_stack1.push(value); } T peek() { if (!m_stack2.empty()) { return m_stack2.top(); } while (!m_stack1.empty()) { m_stack2.push(m_stack1.top()); m_stack1.pop(); } return m_stack2.top(); } T remove() { if (!m_stack2.empty()) { T tmp = m_stack2.top(); m_stack2.pop(); return tmp; } while (!m_stack1.empty()) { m_stack2.push(m_stack1.top()); m_stack1.pop(); } return m_stack2.top(); } }; 

рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП:
" рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦреЗрдВ рдЬреЛ рд╕реНрдЯреИрдХ рдХреЛ рдЖрд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд░рддрд╛ рд╣реИ ред"

рдкреЗрдбрд╝ рдФрд░ рд░реЗрдЦрд╛рдВрдХрди

рдкреЗрдбрд╝реЛрдВ рдФрд░ рд░реЗрдЦрд╛рдВрдХрди рдкрд░ рдкреНрд░рд╢реНрди рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдкреЛрдВ рдореЗрдВ "рдЙрдкрд▓рдмреНрдз" рд╣реИрдВ:
рдпрд╣ рджреГрдврд╝рддрд╛ рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЖрдк рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдкреЗрдбрд╝реЛрдВ рдФрд░ рд░реЗрдЦрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ "рд╕рднреА рдмрд╛рдЗрдирд░реА рдкреЗрдбрд╝ рдмрд╛рдЗрдирд░реА рдЦреЛрдЬ рдкреЗрдбрд╝ рдирд╣реАрдВ рд╣реИрдВ"ред
рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:рдЧреНрд░рд╛рдл рдЕрдирд┐рд╡рд╛рд░реНрдп рдЬреНрдЮрд╛рди:" рдПрдХ рдХреНрд░рдордмрджреНрдз (рдЖрд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ) рд╕рд░рдгреА рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд▓рд┐рдЦреЗрдВ рдЬреЛ рдиреНрдпреВрдирддрдо рдКрдВрдЪрд╛рдИ рдХрд╛ рдПрдХ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд╡реГрдХреНрд╖ рдмрдирд╛рддрд╛ рд╣реИ ред"
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо:
  1. рд╕рд░рдгреА рдХреЗ рдордзреНрдп рддрддреНрд╡ рдХреЛ рдкреЗрдбрд╝ рдореЗрдВ рдбрд╛рд▓реЗрдВ
  2. "рдмрд╛рдИрдВ рд╕рдмрд░реНрд░реЗ" рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ "рдмрд╛рдПрдВ рд╕рдмрдЯреНрд░реА рдореЗрдВ" рдбрд╛рд▓реЗрдВ
  3. "рд░рд╛рдЗрдЯ рд╕рдмрд░реНрд░реЗ" рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ (рд╕рд╣реА рд╕рдмрдЯреНрд░реА рдореЗрдВ) рдбрд╛рд▓реЗрдВ
  4. рдФрд░ рдЗрд╕рд▓рд┐рдП рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐
 tree_node* add_to_tree(int arr[], int start, int end) { if (end < start) { return NULL; } int mid = (start + end) / 2; tree_node* n = new tree_node(arr[mid]); n->left = add_to_tree(arr, start, mid - 1); n->right = add_to_tree(arr, mid + 1, end); return n; } tree_node* create_min_BST(int arr[]) { //... SIZE   //... arr   return add_to_tree(arr, 0, SIZE - 1); } 

рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП:
" рдЧреИрд░-рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╕рдордорд┐рдд рдЯреНрд░реА рд╡реЙрдХ рд▓рд╛рдЧреВ рдХрд░реЗрдВ ред"

UPD : рдЬреИрд╕рд╛ рдХрд┐ рд╢реЗрдбрд▓ рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдЫрд╛рддреНрд░реЛрдВ ( рдХрдирд┐рд╖реНрдареЛрдВ ) рдХреЗ рд▓рд┐рдП рд╣реИред

UPD 2 : рднрд╛рдЧ рджреЛ

Source: https://habr.com/ru/post/In128665/


All Articles