数据结构(三)树 —— 编程作业 06 :Root of AVL Tree

数据结构系列内容的学习目录 → \rightarrow 浙大版数据结构学习系列内容汇总

  题目描述: AVL树是一种自平衡二叉搜索树。在AVL树中,任意节点的两个子树的高度最多相差1。如果在任何时候它们的差超过1,则会进行重新平衡以恢复此属性。旋转规则如下图所示。

在这里插入图片描述
  现给定一个插入序列,需要得到的AVL树的根。

  输入格式: 每个输入文件包含一个测试用例。
        对于每种情况,第一行包含一个正整数N( ⩽ \leqslant 20),为要插入的元素的总数。
        然后在下一行给出N个不同的整数元素。
        一行中的所有数字都用空格隔开。

  输出格式: 对于每个测试用例,将生成的AVL树的根打印在一行中。

  输入样例1(对应图2):

5
88 70 61 96 120

  输出样例1:

70

  输入样例2(对应图4):

7
88 70 61 96 120 90 65

  输出样例2:

88

  代码实现:

#include<iostream>
using namespace std;
typedef struct AVLNode *AVLTree;
struct AVLNode {
   
	int data;     // 存值 
	AVLTree left;  // 左子树 
	AVLTree right;  // 右子树 
	int height;  // 树高 
};

// 返回最大值 
int Max(int a, int b)
{
   
	return a > b ? a : b;
}

// 返回树高,空树返回-1 
int getHeight(AVLTree A)
{
   
	return A == NULL ? -1 : A
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值