使用解除引用的c ++二叉搜索树
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用解除引用的c ++二叉搜索树相关的知识,希望对你有一定的参考价值。
您好我尝试使用deference将节点插入二叉搜索树。但我想我现在卡在插入功能中了。我想在调用插入函数时我犯了一些错误。所以任何人都可以帮我告诉我代码有什么问题,谢谢。
struct BstNode {
int data;
BstNode *left;
BstNode *right;
};
BstNode *GetNewNode(int);
void Insert(BstNode **, int);
void Insert(BstNode **root, int data)
{
if(*root == NULL){
*root = GetNewNode(data);
}
else if(data <= root){
Insert(*(root -> left), data);
}
else {
Insert(*(root -> right), data);
}
BstNode *GetNewNode(int data)
{
BstNode *newNode = new BstNode();
newNode->data = data;
newNode->left = newNode->right = NULL;
return newNode;
}
int main ()
{
BstNode *root = NULL;
Insert(&root,15);
Insert(&root,10);
Insert(&root,20);
return 0;
}
答案
你的意思是以下
void Insert( BstNode **root, int data )
{
if ( not *root )
{
*root = GetNewNode( data );
}
else if ( data < ( *root )->data )
{
Insert( &( *root )->left, data );
}
else
{
Insert( &( *root )->right, data );
}
}
将此函数中的条件语法与函数实现中的条件语法进行比较,一切都将清楚。
例如,此if语句至少有两个错误
else if(data <= root){
^^^^^^^^^^^^
Insert(*(root -> left), data);
^^^^^^^^^^^^^^^
并且编译器将发出相应的诊断消息。
以上是关于使用解除引用的c ++二叉搜索树的主要内容,如果未能解决你的问题,请参考以下文章