●▽● 5,增加结点10,没有变化,在增加结点9时,结点7的BF变为-2,如图11,如果直接左旋7,9,10,因为结点9变成10的右孩子,不符合二叉排序树的特性,所以不能简单的左旋,前面我们说,如果最小不平一、平衡二叉树的构造在一棵二叉查找树中插入结点后,调整其为平衡二叉树。若向平衡二叉树中插入一个新结点后破坏了平衡二叉树的平衡性。首先要找出插入新结点
voidRotateL(Node*parent)//parent为上图的a结点{Node*subR=parent->_right;//记录父结点的右子树Node*subRL=subR->_left;//记录subR的左子树subR->_left=parent;parent->_right=su平衡二叉排序树一.概念最小不平衡子树:距离插入结点最近的,且平衡因子的绝对值大于1的结点为根的子树二.实现原理基本思想:在构建二叉排序树时,每当插入一个结点时,先检查是否因
●^● 首先,我们对二叉树的二叉链表结点结构,进行改造,加入平衡因子属性。二叉树的二叉链表结点结构如下://二叉树的二叉链表结点结构定义//结点结构typedef struct BiTNode{ //结点数1、定义平衡二叉排序树要求任何节点的左右子树高度差绝对值不超过1(左右子树高度可相同)。2、普通二叉排序树不足以依次插入1,2,3,4,5,6数为例,结果如下图所示:当查找元素6时,时间
>▽< 1)左右子树高度差的绝对值不大于1; 2)左右子树都是平衡二叉树。平衡因子:左子树的高度减去右子树的高度,显然,在平衡二叉树中,每个结点的平衡因子的值为-1,0或1。如何构造平衡二叉1.判断二叉树类型(LL, LR, RR, RL) LL型LR型RL型RR型先理解上面四种类型,如何变为平衡二叉树:首先:二叉树的平衡需要通过“左旋”“右旋”来处理。可以把二叉树想象成一个搭在三
?▽? 构造平衡二叉树:如果在一棵平衡的二叉搜索树中,插入一个新节点时,造成了不平衡。此时必须调整树的结构,使之平衡化。平衡旋转有两类:--单旋转(左旋和右旋) --双旋转(左右旋和右左旋) 算法其实很简单—二叉排序树的删除平衡二叉树的特点是任意节点的子树的高度差都小于等于1。2. 整体思路平衡二叉树的构建基本分为三种情况,左旋转、右旋转、