コード例 #1
0
ファイル: heightbalancedtree.C プロジェクト: ankurayadav/dsa
void do_rotation(ROOT *r, int rotation_type)
{
 if(rotation_type == 1)
  rotate_LL(r);
 else if(rotation_type == 2)
  rotate_RL(r);
 else if(rotation_type == 3)
  rotate_LR(r);
 else if(rotation_type == 4)
  rotate_RR(r);
 else
  printf("invalid rotation type \n");
}
コード例 #2
0
ファイル: proto.c プロジェクト: sapphiresy/wordfinder
//balancing
AvlNode* rebalance(AvlNode **node){
  int height_diff = get_height_diff(*node);
  if( height_diff > 1){
    if(get_height_diff((*node)->left_child) > 0)
      *node = rotate_LL(*node);
    else
      *node = rotate_LR(*node);
  }
  else if(height_diff<-1){
    if(get_height_diff((*node)->right_child) < 0)
      *node = rotate_RR(*node);
    else
      *node = rotate_RL(*node);
  }
  return *node;
}
コード例 #3
0
ファイル: AVLtree_height.c プロジェクト: kimhoki/BIT
NODE *balance_tree(NODE **node){
	int height_diff;
	height_diff = get_balance(*node);
	printf("밸런스 값 : %d\n", height_diff);
	if(height_diff > 1){
		if(get_balance((*node)->left) > 0)
			*node = rotate_LL(node);
		else
			*node = rotate_LR(node);
	}

	else if(height_diff <-1){
		if(get_balance((*node)->left) >0)
			*node = rotate_RR(node);
		else
			*node = rotate_RL(node);

	}
	return *node;
}