我正在尝试实现AVL树,但我甚至无法传递if语句
void AVL::insert(Node **r,Node data){ // insert(&root,data)
if(!(*r)){
(*r)= new Node();
(**r) = data;
if( abs( height((*r)->left) - height((*r)->right) ) > 1 ){...}
...
...
}
else
if(data.value<(*r)->value)
insert(&((*r)->left),data);
else
insert(&((*r)->right),data);
}
我的身高功能:
int AVL::height(Node *p){
if (!p) return 0;
int left = height(p->left);
int right = height(p->right);
return (1 + max(left,right));
}
我不知道我做错了什么,一切都应该正常。我试着在if语句= if(abs(height((* r) - &gt; left) - height((* r) - &gt; right))&gt; 1)之前输出“test”并且工作完美,尝试里面声明,永远不要进去。
我的实际树:
100
90
80
70
应该是这样的:
90
80 100
70
如果您需要更多信息,请告诉我们。