试图旋转AVL树,高度问题

时间:2014-06-22 20:57:05

标签: c++ data-structures tree binary-tree avl-tree

我正在尝试实现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

如果您需要更多信息,请告诉我们。

0 个答案:

没有答案