02
Май
2021

C/C++ Вставка в BST-дерево

Я хотел бы поинтересоваться, где моя ошибка в реализации в вставке в дерево?(та, что закоментирована)Буду признателен за помощь.

typedef struct tree {
    int  key;
    struct tree* left;
    struct tree* right;
} tree_t;

tree_t* tree_insert(tree_t** tr, int key){
/*  if (*tr == NULL){
        *tr = (tree_t*)malloc(sizeof(tree_t));
        *tr->p=key;
        *tr->left=NULL;
        *tr->right=NULL;
        return p;
    }
    else{
        if(key>=*tr->p){
            tree_insert(*tr->right,key);
        }
        else tree_insert(*tr->left,key);
    }
}*/
    tree_t* p = *tr;
    while(p != NULL){
        if(key < p->key){
            tr = &p->left;
            p  = p->left;
        } 
        else {
            tr = &p->right;
            p  = p->right;
        }
    }
    p = (tree_t*)malloc(sizeof(tree_t));
    if(p != NULL){
        p->key  = key;
        p->left = p->right = NULL;
        *tr = p;
    }
    return p;
}

Источник: https://ru.stackoverflow.com/questions/1277396/c-c-%D0%92%D1%81%D1%82%D0%B0%D0%B2%D0%BA%D0%B0-%D0%B2-bst-%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE

Тебе может это понравится...

Добавить комментарий