Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- struct Node {
- int value;
- int cur;
- int left;
- int right;
- int height;
- Node() {
- height = 0;
- right = 0;
- left = 0;
- cur = 0;
- value = 0;
- }
- Node(int v, int l, int r, int c) {
- value = v;
- left = l;
- right = r;
- cur = c;
- }
- };
- int Height_dp(int i, std::vector<Node>& AVL) {
- if (i == 0) {
- return 0;
- }
- if (AVL[i].height != 0) {
- return AVL[i].height;
- }
- AVL[i].height = std::max(Height_dp(AVL[i].right, AVL), Height_dp(AVL[i].left, AVL)) + 1;
- return AVL[i].height;
- }
- int bFactor(int i, std::vector<Node>& AVL) {
- return AVL[AVL[i].right].height - AVL[AVL[i].left].height;
- }
- void leftRotate ()
- int main() {
- int n;
- std::cin >> n;
- std::vector<Node> avl;
- avl.push_back(Node());
- int v, l, r;
- for (int i = 1; i <= n; i++) {
- std::cin >> v >> l >> r;
- avl.push_back(Node(v, l, r, i));
- }
- Height_dp(1, avl);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement