C语言实现平衡二叉树

本文介绍了平衡二叉树的概念,包括平衡因子BF的定义以及如何判断树的平衡性。在C语言中,通过插入节点时检查和调整树的平衡,使用旋转操作(左旋、右旋)来保持平衡二叉树的特性。程序已在DEV C++环境中成功运行并展示运行结果。
摘要由CSDN通过智能技术生成

平衡二叉树(Self-Balancing Binary Search Tree),是一种二叉排序树,其中每个结点的左子树和右子树的高度差为-1,0,1之中的某个值。

二叉平衡树又称为AVL树。

平衡因子BF是指二叉树上结点的左子树深度减去右子树深度的值。

只要二叉树上有一个结点的平衡因子的绝对值大于1,则该二叉树就是不平衡的。

平衡二叉树构建的基本思想是在构建二叉排序树的过程中,每当插入一个结点时,先检查是否因插入二破坏了树的平衡性,若是,则找出最小不平衡子树。在保持二叉树特性的前提下,调整最小不平衡子树之间的链接关系,进行相应的旋转,使之称为新的平衡子树。

当最小不平衡子树根结点的BF大于1时,右旋,小于-1时,左旋。插入结点后,最小不平衡子树的BF与它的子树的BF符号相反时,就需要先对结点进行一次旋转以是的符号相同后,再反向旋转一次才能够完成平衡操作。

以下程序在DEV C++中调试运行通过。

#include<stdio.h>
#include<stdlib.h>
#define LH 1
#define EH 0
#
  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值