平衡二叉树
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
struct Node {
int data;
int height;
Node* lchild;
Node* rchild;
};
/*获得该点的高度*/
int getHeight(Node* node) {
if (node == NULL) return 0;
return node->height;
}
/*求该点的平衡因子*/
int getBalanceFator(Node* node) {
return (getHeight(node->lchild) - getHeight(node->rchild));
}
/*只是更新其中高度,不需要改变结点排列,不需要取地址符号& */
void updateHeight(Node* node)
{
node->height = max(getHeight(node->lchild), getHeight(node->rchild)) + 1;
}
/*新建结点,默认为1*/
Node* newNode(int data)
{
Node* node = new Node;
node->height = 1;
node->lchild = NULL;
node->rchild = NULL;
node->data = data;
return node;
}
/*左旋,右旋操作,需要修改二叉树结点的排列顺序,要带取地址符号& */
void L(Node* &root