Я пытаюсь добавить элемент в наборе с помощью бинарного дерева:C++: где мои новые узлы?
bool TreeSet::add(const string &str)
{
if (treesize == 0)
{
TreeNode->data = str;
treesize++;
return true;
}
else
{
if (str < TreeNode->data)
return insert(TreeNode->left, str);
else if (str > TreeNode->data)
return insert(TreeNode->right, str);
else
return false;
}
return false;
}
bool TreeSet::insert(TREE *node, const string &str) //private
{
if (node == NULL)
{
node = new TREE;
node->data=str;
node->left = NULL;
node->right = NULL;
treesize++;
return true;
}
else
{
if (str < node->data)
return insert(node->left, str);
else if (str > node->data)
return insert(node->right, str);
else
return false;
}
return false;
}
Как вы можете видеть, я хочу, чтобы инициализировать ВАЛ-структуру внутри вставки и когда я закончу делать это, я хочу, чтобы связать его с левый или правый узел дерева.
Но когда я GdB это только один уровень дерева (верхний уровень) может быть достроено, *left
и *right
узел не NULL
независимо от того, сколько строк я пытался добавить к нему. Зачем?
Мое древа:
typedef struct tree
{
string data;
tree *left;
tree *right;
} TREE;
Возможно, у вас есть несколько [правил из трех] (http://stackoverflow.com/questions/4172722/what-is-the-rule-of-three) проблем. –