树
树
树是一种数据结构 由于其几何视图长得像树而得名
树的组成单位是结点
结点(以二叉树为例)
结点中 存储的三个地址值 (或为空) 以及有实际意义的数据值
最上方地址值为空的结点称之为根节点
没有左孩子和右孩子的结点称之为叶子结点
查找二叉树
查找二叉树见名知意 就是为了提高查找效率的二叉树
查找二叉树有两种形式 平衡二叉树和红黑树
平衡二叉树
任意结点子树的高度差的绝对值小于等于1的二叉树称为平衡二叉树
但是通常增加一个结点时 会打破平衡
以下是回复平衡的几种方式、
1.添加到了左子树的左子树 可以采取右旋
2.添加到了右子树的右子树 可以采取左旋
3添加到了左子树的右子树 可以局部左旋再右旋
4添加到了右子树的左子树 可以局部右旋再左旋
红黑树
红黑树也是一种特殊的查找二叉树 它满足红黑规则
1.树的结点要么是红色要么是黑色
2不能存在两个红色的结点相连
3.根结点为黑色
4.叶子结点为黑色
5.任意结点到后代叶子结点的简单路径经过的黑结点相同
基本认知:添加红结点,运行效率高
再添加红结点时 需要遵守红黑规则 需要注意以下的情况
1.如果是增加为根 直接变为黑色
2如果增加为非根 需要根据父亲颜色分类讨论
如果父亲是黑色 则不用进行任何操作
如果父亲是红色 叔叔是红色
则父亲改为黑色 叔叔改为黑色 祖父改为红色 如果祖父为根 直接改为黑色 如果祖父不为根 根据祖父情况 让祖父结点为当前节点 在进行讨论
如果父亲是红色 叔叔为黑色
增加结点为右孩子 将父作为结点进行左旋 再进行判断
如果父亲是红色 叔叔为黑色
增加结点为左孩子 将父设置为黑色 祖父设置为红色 以祖父为结点在进行右旋

浙公网安备 33010602011771号