我想使用二叉樹集中添加元素: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這個,只能構建1層樹(頂層),*left
和*right
節點是NULL
無論我試圖添加多少字符串。爲什麼?
我的樹是:
typedef struct tree
{
string data;
tree *left;
tree *right;
} TREE;
可能你有一些[三](http://stackoverflow.com/questions/4172722/what-is-the-rule-of-ree)問題。 – 2014-10-02 17:17:58