c++ - AVL 平衡寻找何时平衡
问题描述
我正在尝试创建 AVL 树,但在查找树不平衡的位置时遇到了问题。我在此函数中遇到分段错误。
void AVL::findInbalance(Node* start) {
cout << "findInbalance " << start->data << endl;
int diff;
if(start->rightChild == nullptr && start->leftChild == nullptr) {
diff = 0;
}
else {
diff = start->rightChild->getHeight() - start->leftChild->getHeight();
}
if(diff > 1 && start->rightChild->rightChild->getHeight() >= start->rightChild->leftChild->getHeight()){
cout << "left rotation" << endl;
rotation(start, 0);
}
if(diff < -1 && start->leftChild->leftChild->getHeight() >= start->leftChild->rightChild->getHeight()){
cout << "right rotation" << endl;
rotation(start, 1);
}
if(diff < -1 && start->leftChild->leftChild->getHeight() < start->leftChild->rightChild->getHeight()) {
cout << "left right rotation" << endl;
rotation(start->leftChild, 0);
rotation(start, 1);
}
if(diff > 1 && start->rightChild->rightChild->getHeight() < start->rightChild->leftChild->getHeight()) {
cout << "right left rotation" << endl;
rotation(start->rightChild, 1);
rotation(start, 0);
}
if(start->parent != nullptr){
findInbalance(start->parent);
}
else {
cout << "balance complete" << endl;
return;
}
}
解决方案
推荐阅读
- python - 使用 ipywidgets FileUpload 小部件时,我可以定义文件上传操作吗
- c# - 使用 linq 查询为每一行获取重复的行
- python - 问题从套接字接收图像数据到 pygame
- mxnet - CUDA忽略错误,检查失败:e == cudaSuccess:CUDA:初始化错误
- numpy - Numpy数组 - 像素坐标
- javascript - 如何正确迭代 API 密钥数组以同步发出请求?
- python - 如何将5分钟的降雨记录分解为每分钟的平均值
- reactjs - 无法读取未定义的属性“地图”(帮帮我)
- java - 用于比较两个 Mats 时出现 countNonZero 错误
- java - Spring Boot - 验证相关实体的一对多关系