Реализация неупорядоченного двоичного дерева - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь создать неупорядоченное двоичное дерево. Как нам вставить Treenode в неупорядоченное двоичное дерево? Каким должен быть лог c?

Под вставкой здесь я подразумеваю вставку узла как листа. Например, если я начну с узла root, а затем перейду к правому узлу, теперь куда мне вставить узел.

Если у кого-то есть ссылка на реализацию UNORDERED двоичного дерева [Not BST], пожалуйста, предоставьте.

1 Ответ

0 голосов
/ 17 июня 2020
void addnode(T data){
    Node<T>* new_node=new Node<T>(data);
    if(this->root==nullptr){
        this->root= new_node;
        return ;
    }else{
        std::queue<Node<T>* > Q;
        Q.push(this->root);
        while(!Q.empty()){
            Node<T>* popping_element= Q.front();
            Q.pop();

            if(!popping_element->left){
                popping_element->left=new_node;
                return;
            }else if(!popping_element->right){
                      popping_element->right=new_node;
                      return;
            }else{
                Q.push(popping_element->left);
                Q.push(popping_element->right);
            }
        }
    }

}

То, что я пытался сделать Tree Structure Добавить узел как левый дочерний элемент 30. Это называется вставкой порядка уровней в двоичное дерево. У него нет порядка или он не отсортирован, оба подразумевают одно и то же значение.

...