右旋一次之后有多高
那棵往左歪的小树(17 的左边挂 15,15 的左边挂 13),右旋一次。
运行下面这段程序:
#include <algorithm>
#include <iostream>
#include <map>
#include <string>
#include <vector>
using namespace std;
struct ANode {
int val;
ANode* left = nullptr;
ANode* right = nullptr;
};
int height(ANode* node) {
if (node == nullptr) return 0;
return 1 + max(height(node->left), height(node->right));
}
ANode* left_chain() {
// 一棵往左歪的小树:17 的左边挂 15,15 的左边挂 13
ANode* root = new ANode{17};
root->left = new ANode{15};
root->left->left = new ANode{13};
return root;
}
int main() {
ANode* root = left_chain();
ANode* new_root = root->left;
root->left = new_root->right;
new_root->right = root;
cout << height(new_root) << endl;
}
(本题用 g++ -std=c++17 -O0 编译。)
全部评论