Я хочу создать линейную структуру с помощью моего BST, но после использования этой функции ниже я теряю связи между узлами дерева.
В дереве у меня есть узлы (levelOrder):
4
23
2357
когда я использую функцию makeLineStructure, вывод будет:
4
6
7
если я вращаю дерево вручную, вывод правильный.
void rotate_right(struct tree_node **root){
if((*root) != NULL && (*root)->left_child != NULL){
struct tree_node *new_root = (*root)->left_child;
struct tree_node *old_right_child_of_new_root = (*root)->left_child->right_child;
new_root->right_child = (*root);
(*root)->left_child = old_right_child_of_new_root;
(*root) = new_root;
}
}
void makeLineStructure(struct tree_node **root){
struct tree_node *tmp = (*root);
while(tmp != NULL){
if(tmp->left_child != NULL){
rotate_right(&tmp);
}else{
tmp = tmp->right_child;
}
}
}