#数据结构与算法学习笔记#PTA13:平衡二叉搜索树的根 Root of AVL Tree(C/C++)

这篇博客介绍了如何构建平衡二叉搜索树(AVL树)并找到其根节点。在每次插入节点后,通过四种旋转方式保持树的平衡。输入指定数量的键后,输出构建的AVL树的根节点。
摘要由CSDN通过智能技术生成

2018.5.2

平衡二叉树(AVL Tree)是任意结点平衡因子BF(左右子树左右高度差)≤1的二叉搜索树。要想建成AVL树,需要在每一个结点插入时进行判断和调整。调整的方法有四种(左左单旋、右右单旋、左右双旋、右左双旋),四种方式分别根据结点插入时的相对结构判断,如下图Figure1的情况为左左单旋调整情况。

本题要求根据输入顺序建一棵AVL树,并且返回其根节点。思路就是AVL树的基本操作了。需要注意的是,给树的每个结点加一个参数代表树高,当左右子树高度差为2时进行调整,每次对树结构调整后也需要对树高值进行调整。具体操作详见代码。


Root of AVL Tree

An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child subtrees of any node differ by at most one; if at any time they differ by more than one, rebalancing is done to restore this property. Figures 1-4 illustrate the rotation rules.

 

Now given a sequence of insertions, you are supposed to tell the root of the resulting AVL tree.

 

Input S

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值