В моем main. cpp я пытался добавить элемент в дерево, используя перегрузку оператора. В то время как в оригинальной версии без перегрузки оператора, он работает для добавления элемента в дерево, в этой версии он не может добавить даже 40, второй элемент в древовидную структуру, что меня очень смущает. Я использую двойной указатель на Избегайте копирования в C ++, который должен был работать как и прежде. Пожалуйста, помогите мне выяснить проблему.
#include <iostream>
#include "Tree.hpp"
using namespace std;
int main()
{
Tree<TreeNode> tree;
tree + 50 + 40 + 20 + 45 + 10 + 25;
cout << tree.search(40)->data << endl;
return 0;
}
Tree<T>& Tree<T>::operator+(int data) {
insertNode(&root, data, nullptr);
return *this;
}
template<typename T>
int Tree<T>::insertNode(T **start,int data,T* ancester){
if((*start)==nullptr){
*start=new T(data);
(*start)->ancester=ancester;
return 0;
}
if(data>(*start)->data){
insertNode(&(*start)->LeftChild,data,*start);
}
if(data<(*start)->data)
insertNode(&(*start)->RightChild,data,*start);
}
Вот дерево проблем и функционирующее дерево:
- проблематично c дерево перегрузки операторов
- функционирующее дерево неоператорной перегрузки