Проверьте, имеют ли 2 дерева одинаковую структуру - PullRequest
0 голосов
/ 08 мая 2020

Передача только объекта типа BST НЕ типа Node, logi c здесь неверно, мне нужна помощь с этим, он всегда возвращает false

bool BST<T>::similarStructure(BST<T>& Tree2) {
    if (isEmpty()) {
        cout << "tree is empty\n";
        return;
    }

    StackArray<node<T>> *s1, *s2; // s1 for traversal,, s2 for printing

    s1->Push(root);
    s2->Push(tree2.root);
    while (!s1.IsEmpty() &&!s2.isempty()) {
        node<T> n = s1->Pop();
        node<T> n1=s2->Pop();
        if (n->right != NULL && n1->right!=NULL){
            s1.Push(n->right);
            s2.Push(n1->right); }
         else{
           return false;}

        if (n->left != NULL && n->left!=NULL){
            s1.Push(n->left); 
            s2.Push(n1->left);}
        else{
            return false;}

    }
    return true;
}

1 Ответ

0 голосов
/ 09 мая 2020

В качестве примера возьмем простейшую ситуацию, когда дерево lhs и дерево rhs имеют только один узел.

Внутри while l oop при попадании в первое выражение условия if (n->right != NULL && n1->right!=NULL), поскольку n->right == NULL, выражение оценивает значение false, таким образом, возвращает false для этой функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...